Chris Webster a écrit :
I went to convert my _FillValue to NAN; I found that upon reading data
and doing comparisons a false is always returned:
if (datum[i] == vp->attr->missingValue) // is always false if nan's
At first I thought I was back in the world of round off hell until I
was pointed to:
http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
specifically these lines:
"A NAN will never return true on a <= comparison," and
"One other complication is that comparisons involving NANs are
always supposed to return false, "
I would like to suggest that mention of this be made on the netCDF
Best Practices page where you point people to use NAN as the _FillValue.
...then I'd like to whine that I have to retro-fit all my code and
double the number of checks for every data point to determine if it's
_Fill/missing (...using isnan(3)). :)
--Chris
In our code we always compare default values (_FillValue or
missing_value) with a function in
case of theese are NaN.
This function looks like:
Boolean IsDefault(double X, Y)
{
if (isnan(X))
return isnan(Y)
else
return X == Y;
}
For files we create we never use a NaN value but a fully representable
float (i.e. a number which does
not have representation problem and rounding risk) like 2.0E200
--
Philippe Poilbarbe CLS Océanographie Spatiale
mailto:Philippe.Poilbarbe@xxxxxxxxxxxx
phoneto:+33(5)61394727
Parc technologique du canal
8-10, Rue Hermes
31526 Ramonville St-Agne