如何在Python中准确解释大浮点数

时间:2019-05-06 19:38:24

标签: python python-2.7

我想使用Python 2.7计算一个非常大的数字(类型,浮点数)和一个非常小的数字的加法运算。

例如:

>> x = 1546439400046560970.
>> y = 1.
>> print(int(x + y))
1546439400046561024

这是不对的。正确答案是1546439400046560971。

我意识到问题是由于从float到int类型转换引起的。如果我想获得正确的答案,该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

  

我意识到问题是由于从float到int类型转换引起的。

不是。浮点数本身并不能精确地存储您的价值。通过转换为比浮点数更精确的类型,例如<div id="tutorial" onload="onLoadTutorial();"></div> function onLoadTutorial() { if (document.location.endsWith("#tutorial")) { //... } } ,可以证明是这种情况。

decimal

因此,即使您从未使用过>>> import decimal >>> decimal.decimal(1546439400046560971.) Decimal('1546439400046561024') 类型,任何最初将x存储为浮点数的解决方案都注定会失败。

一种可能的解决方案是将值存储为小数点。请记住使用字符串而不是浮点数来初始化它们,否则精度会丢失。

int