大数除法导致结果不准确
Big number division leads to unexact result
我正在测试一个处理非常大的数字 (1e17) 的 solidity 程序。
我正在测试的公式如下:int(1e17*(100-3)/(100-1))
WolframAlpha Solidity 语言告诉我它等同于 97979797979797979.
但是测试失败了,因为 Python returns 97979797979797984.
如何使用 Python 获得正确的值?
在这种情况下,fractions
模块在这里工作得很好,因为它在两个数字之间的划分是精确的,因为它保留了结果的精度。
>>> from fractions import Fraction
>>> int(Fraction(10)**17*(100-3)/(100-1))
97979797979797979
>>>
(这里我们避免像 1e17
这样的符号,因为它可能解析为不精确的 float
值。)
我正在测试一个处理非常大的数字 (1e17) 的 solidity 程序。
我正在测试的公式如下:int(1e17*(100-3)/(100-1))
WolframAlpha Solidity 语言告诉我它等同于 97979797979797979.
但是测试失败了,因为 Python returns 97979797979797984.
如何使用 Python 获得正确的值?
在这种情况下,fractions
模块在这里工作得很好,因为它在两个数字之间的划分是精确的,因为它保留了结果的精度。
>>> from fractions import Fraction
>>> int(Fraction(10)**17*(100-3)/(100-1))
97979797979797979
>>>
(这里我们避免像 1e17
这样的符号,因为它可能解析为不精确的 float
值。)