Python十进制模块提供与计算器不同的数字

时间:2019-01-24 10:08:12

标签: python decimal division

我想从除法中获得大量准确的数字,例如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

1 个答案:

答案 0 :(得分:2)

您正在使用普通的浮点除法(1/7)执行计算,然后将结果传递到Decimal,因此,您试图从已经近似的值中获得更高的精度。

另一方面,如果您这样做

Decimal(1)/7

您将获得更精确的结果:

Decimal('0.1428571428571428571428571428571428571429')