我想使用Python 2.7计算一个非常大的数字(类型,浮点数)和一个非常小的数字的加法运算。
例如:
>> x = 1546439400046560970.
>> y = 1.
>> print(int(x + y))
1546439400046561024
这是不对的。正确答案是1546439400046560971。
我意识到问题是由于从float到int类型转换引起的。如果我想获得正确的答案,该如何解决这个问题?
答案 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