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