gpt4 book ai didi

python - Python 中的对数不准确

转载 作者:太空狗 更新时间:2023-10-29 19:30:13 24 4
gpt4 key购买 nike

我在公司每天都使用 Python 2.4。我使用了标准数学库中的多功能对数函数“log”,当我输入 log(2**31, 2) 时,它返回 31.000000000000004,这让我觉得有点奇怪。

我对 2 的其他幂也做了同样的事情,而且效果很好。我跑了“log10(2**31)/log10(2)”,我得到了一轮 31.0

我尝试在 Python 3.0.1 中运行相同的原始函数,假设它已在更高级的版本中修复。

为什么会这样? Python 中的数学函数是否可能存在一些不准确的地方?

最佳答案

这在计算机算法中是意料之中的。它遵循特定规则,例如 IEEE 754 ,这可能与您在学校学到的数学不符。

如果这确实很重要,请使用 Python 的 decimal type .

例子:

from decimal import Decimal, Context
ctx = Context(prec=20)
two = Decimal(2)
ctx.divide(ctx.power(two, Decimal(31)).ln(ctx), two.ln(ctx))

关于python - Python 中的对数不准确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/931995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com