Python 十进制模块给出的数字与计算器不同
Python Decimal module giving different numbers than calculator
我想在除法结果中获得大量准确的数字,例如 1/7,但是 Python 给出的结果与高精度计算器不同。
我用 Python 3 尝试了 decimal 库,并尝试更改其精度和舍入模式,但它给出的结果与计算器不同。
from decimal import *
getcontext().prec = 40
print (Decimal(1/7))
https://keisan.casio.com/calculator 的高精度计算器表示结果是 142857 的重复模式,但 Python 的结果在 16 位数字后打破了这个模式。这是它给出的数字:
0.142857142857142849212692681248881854116916656494140625
您正在使用普通的浮点除法 (1/7)
执行计算,然后将该结果传递给 Decimal
,因此您试图从已经近似的东西中获得额外的精度。
另一方面,如果你这样做
Decimal(1)/7
你得到更精确的结果:
Decimal('0.1428571428571428571428571428571428571429')
我想在除法结果中获得大量准确的数字,例如 1/7,但是 Python 给出的结果与高精度计算器不同。
我用 Python 3 尝试了 decimal 库,并尝试更改其精度和舍入模式,但它给出的结果与计算器不同。
from decimal import *
getcontext().prec = 40
print (Decimal(1/7))
https://keisan.casio.com/calculator 的高精度计算器表示结果是 142857 的重复模式,但 Python 的结果在 16 位数字后打破了这个模式。这是它给出的数字:
0.142857142857142849212692681248881854116916656494140625
您正在使用普通的浮点除法 (1/7)
执行计算,然后将该结果传递给 Decimal
,因此您试图从已经近似的东西中获得额外的精度。
另一方面,如果你这样做
Decimal(1)/7
你得到更精确的结果:
Decimal('0.1428571428571428571428571428571428571429')