From 2b06a0b2234cf2779f80e87038011067be282bcb Mon Sep 17 00:00:00 2001 From: Jeremie Guichard Date: Thu, 9 Mar 2017 23:07:30 +0700 Subject: Fix potential double/float to int rounding errors Not using lrint(f) when converting double/float to int creates rounding errors. This error was detected by TestParse::testParseDM4 failure on Windows. It was creating rounding inconsistencies on Linux too, see change in TestDiveDM4.xml. Enable -Wfloat-conversion for gcc version greater than 4.9.0 Signed-off-by: Jeremie Guichard --- core/divesite.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'core/divesite.c') diff --git a/core/divesite.c b/core/divesite.c index 73c198e99..cbcc89d91 100644 --- a/core/divesite.c +++ b/core/divesite.c @@ -65,7 +65,7 @@ unsigned int get_distance(degrees_t lat1, degrees_t lon1, degrees_t lat2, degree double c = 2 * atan2(sqrt(a), sqrt(1.0 - a)); // Earth radious in metres - return 6371000 * c; + return lrint(6371000 * c); } /* find the closest one, no more than distance meters away - if more than one at same distance, pick the first */ -- cgit v1.2.3-70-g09d2