Ari Jolma kirjoitti 11.11.2017 klo 12:05:
I have been bitten twice, once with ArcGIS and now with Rasdaman WCS,
with numeric accuracy.
I'm making a data request on the corner of the bounding box, let's say
it has minimum X of 75042.7273594. I'm setting my minX to that value
and I'm enforcing it to that value with MAX (this was introduced
because of a case with ArcGIS). The I print that to the request with
"%.18g" (it was "%.15g" earlier but I changes it to that because of
ArcGIS) and the result is 75042.7273593999998, which is not good for
Rasdaman, since it is formally less than 75042.7273594. Although, in gdb
(gdb) p 75042.7273594 > 75042.727359399999
$7 = false
Any ideas how to detect/prevent these kinds of situations? Keep the
checks and go back to "%.15g"? Not ok with ArcGIS.
I made a small function to convert the floating point numbers to strings
(using "%.18g") and then comparing the strings. Seems to work but it
requires storing the coverage envelope in the DescribeCoverage XML as
strings and using those. That's since simply reading "75042.7273594"
into a double and then printing it out with "%.18g" changes it into
"75042.727359399999".
Ari
Ari
_______________________________________________
gdal-dev mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/gdal-dev