【问题标题】:Python Decimal module giving different numbers than calculatorPython Decimal 模块给出的数字与计算器不同
【发布时间】:2019-01-24 10:08:11
【问题描述】:

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

【问题讨论】:

    标签: python decimal division


    【解决方案1】:

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

    另一方面,如果你这样做了

    Decimal(1)/7
    

    你会得到更精确的结果:

    Decimal('0.1428571428571428571428571428571428571429')
    

    【讨论】:

    • 谢谢。我去研究了库的舍入模式和其他设置,但答案在第一个示例代码中,它们显示:“Decimal(1) / Decimal(7)”这样一个基本错误。
    猜你喜欢
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 2017-10-17
    • 2013-01-31
    相关资源
    最近更新 更多