Re: [netcdfgroup] Precision an dSignificant digits in netcdf

On 2016/07/08 10:07 AM, Ismail SEZEN wrote:
If we put the data aside, there is a dilemma here between header outputs
of netcdf file by ncdump and R:ncdf4 package. In the ncdf4 oputput,
add_offset and scale_factor has extra extra digits after decimal point.
I don’t know how to interpret.


This is just the way floating point works. The offset, for example, is stored in the netcdf file as single-precision. R has no single-precision; reals are double-precision. When it converts the single-precision number to double, it is no longer the closest representation of the original decimal number.

Using python:

In [1]: import numpy as np
In [2]: x1 = np.float32('187.65')
In [3]: x2 = np.float64('187.65')
In [4]: x3 = np.float64(x1)
In [5]: print(x1, x2, x3)
187.65 187.65 187.649993896

In [6]: x1
187.64999

In [7]: x2
187.65000000000001

In [8]: x3
187.64999389648438

R is showing you x3; ncdump is showing you x1, recognizing that it is the single-precision representation of 187.65, as in the print statement above. As you can see, x3 is not the double-precision representation of 187.65; x2 is.

Eric



  • 2016 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: