我使用netCDF Python库来读取netCDF变量,其中list(变量)返回正确的小数精度,如图像中所示(使用PyCharm IDE)。但是,当我尝试通过索引获取元素时,例如:variable [0],它返回舍入的值(例如:5449865.55794),而我需要5449865.55793999997。
如何以正确的小数精度迭代此列表?
一些基本代码
from netCDF4 import Dataset
nc_dataset = Dataset(self.get_file().get_filepath(), "r")
variable_name = "E"
// netCDF file contains few variables (axis dimensions)
variable = nc_dataset.variables[variable_name]
variable is not a list but a netCDF object, however when using list() or variable[index] will return element value of the axis dimension.
答案 0 :(得分:1)
你追逐的小数是假的。不同之处仅在于这些数字在屏幕上的显示方式,而不在于它们在您的计算机中的存储方式。
尝试以下方法来说服自己
a = 5449865.55793999997
a
# prints 5449865.55794
如果我们从字面上理解这两个数字之间的差异是3x10 ^ -11。 a
大小的64位浮点变量可以解析的最小差异大于一个数量级。因此,您的计算机无法区分这两个十进制数字。
但看看光明的一面。您的数据不会受到某些神秘过程的破坏。
答案 1 :(得分:0)
希望这是适合您的需求:
import decimal
print decimal.Decimal('5449865.55793999997')