来自 math.log(python 3) 的错误答案

Sai*_*iot 5 python math

今天,我用math.log()函数得到了 4913 以 17 为底的对数。答案是 3,但是当我运行下面的代码时,我得到了 2.9999999999999996。

1) 是因为math.log(x, b)的计算是log(x) / log(b)吗?

2)是否有任何解决方案可以获得正确答案3?

import math
print(math.log(4913,17))
Run Code Online (Sandbox Code Playgroud)

Ita*_*kin 2

  1. 是的,文档如此明确地说明了这一点。
  2. 另一个解决方案是使用“decimal”库中的 Decimal 类:

    import math
    from decimal import Decimal, getcontext
    getcontext().prec = 6
    Decimal(math.log(4913))/Decimal(math.log(17))
    
    Run Code Online (Sandbox Code Playgroud)

  • 或 `Decimal(4913).ln() / Decimal(17).ln()` (2认同)