diff --git a/nping/stats.cc b/nping/stats.cc index fd62a2360..782ff0688 100644 --- a/nping/stats.cc +++ b/nping/stats.cc @@ -190,7 +190,7 @@ double NpingTimer::elapsed(struct timeval *now){ gettimeofday(&tv, NULL); end_tv = &tv; } - return TIMEVAL_SUBTRACT(*end_tv, start_tv) / 1000000.0; + return TIMEVAL_FSEC_SUBTRACT(*end_tv, start_tv); } diff --git a/nping/stats.h b/nping/stats.h index 90e72ce08..e6c91ffae 100644 --- a/nping/stats.h +++ b/nping/stats.h @@ -180,6 +180,8 @@ #define TIMEVAL_MSEC_SUBTRACT(a,b) ((((a).tv_sec - (b).tv_sec) * 1000) + ((a).tv_usec - (b).tv_usec) / 1000) /* Timeval subtract in seconds; truncate towards zero */ #define TIMEVAL_SEC_SUBTRACT(a,b) ((a).tv_sec - (b).tv_sec + (((a).tv_usec < (b).tv_usec) ? - 1 : 0)) +/* Timeval subtract in fractional seconds; convert to float */ +#define TIMEVAL_FSEC_SUBTRACT(a,b) ((a).tv_sec - (b).tv_sec + (((a).tv_usec - (b).tv_usec)/1000000.0)) class NpingTimer {