簡體   English   中英

Python math.log 和 math.log10 給出不同的結果

[英]Python math.log and math.log10 giving different results

我正在編寫代碼來計算給定整數中的位數。

我最初使用

math.log(num,10)

但發現它在 num = 1000 處給出了不正確的(近似)值

math.log(1000,10)
>2.9999999999999996

我知道上述情況可能是由於計算機中的浮點運算不同但相同,但是使用 math.log10 可以完美運行

math.log10(1000)
>3.0

假設log10log更准確並在涉及 log base 10 的任何地方使用它而不是使用更通用的log function 是否正確?

Python 的數學文檔專門說:

math.log10(x)

返回 x 的以 10 為底的對數。 這通常比 log(x, 10) 更准確。

根據 Python 數學模塊文檔:

math.log(x,[base])
使用一個參數,返回 x 的自然對數(以 e 為底)。 對於兩個 arguments,將 x 的對數返回到給定底數,計算為log(x)/log(base)

而在math.log10部分:

math.log10(x)
返回 x 的以 10 為底的對數。 這通常比log(x, 10)更准確。

這可能是由於浮點數的舍入。

因為,如果我采用第一種使用log(1000)/log(10)的方法,我會得到:

>>> log(1000)
6.907755278982137
>>> log(10)
2.302585092994046
>>> 6.907755278982137/2.302585092994046
2.9999999999999996

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM