我想使用Python 2.7计算一个很大的数字(类型,浮点数)和一个很小的数字的加法运算。
例如:
>> x = 1546439400046560970.
>> y = 1.
>> print(int(x + y))
1546439400046561024
这是不对的。正确答案是1546439400046560971。
我意识到问题是由于类型从float转换为int所致。如果我想获得正确的答案,该如何解决这个问题?
最佳答案
我意识到问题是由于类型从float转换为int所致。
并不是的。浮点数本身并不能精确地存储您的价值。通过转换为比浮点数更精确的类型(例如decimal
),可以证明是这种情况。
>>> import decimal
>>> decimal.decimal(1546439400046560971.)
Decimal('1546439400046561024')
因此,即使您从未使用
x
类型,任何最初将int
存储为浮点的解决方案都注定会失败。一种可能的解决方案是将您的值存储为十进制开头。请记住使用字符串而不是浮点数来初始化它们,否则精度将丢失。
>>> from decimal import Decimal
>>> x = Decimal("1546439400046560971")
>>> y = Decimal("1")
>>> x+y
Decimal('1546439400046560972')
关于python - 如何在Python中准确解释大型浮点数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56011363/