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
假设 log10
比 log
更准确并在涉及对数基数 10 的任何地方使用它而不是使用更通用的 log
函数是否正确?
Python's math documentation具体说:
math.log10(x)
Return the base-10 logarithm of x. This is usually more accurate than log(x, 10).
根据 Python 数学模块文档:
math.log(x,[base])
With one argument, return the natural logarithm of x (to base e).
With two arguments, return the logarithm of x to the given base, calculated as log(x)/log(base)
.
而在 math.log10
部分:
math.log10(x)
Return the base-10 logarithm of x. This is usually more accurate than log(x, 10)
.
可能是浮点数四舍五入的问题。
因为,
如果我采用第一种使用 log(1000)/log(10)
的方法,我得到:
>>> log(1000)
6.907755278982137
>>> log(10)
2.302585092994046
>>> 6.907755278982137/2.302585092994046
2.9999999999999996
我正在编写代码来计算给定整数的位数。
我最初使用
math.log(num,10)
但发现它在 num = 1000 处给出了不正确的(近似)值
math.log(1000,10)
>2.9999999999999996
我知道上述情况可能是由于计算机中的浮点运算不同但相同,但是使用 math.log10
可以完美运行math.log10(1000)
>3.0
假设 log10
比 log
更准确并在涉及对数基数 10 的任何地方使用它而不是使用更通用的 log
函数是否正确?
Python's math documentation具体说:
math.log10(x)
Return the base-10 logarithm of x. This is usually more accurate than log(x, 10).
根据 Python 数学模块文档:
math.log(x,[base])
With one argument, return the natural logarithm of x (to base e). With two arguments, return the logarithm of x to the given base, calculated aslog(x)/log(base)
.
而在 math.log10
部分:
math.log10(x)
Return the base-10 logarithm of x. This is usually more accurate thanlog(x, 10)
.
可能是浮点数四舍五入的问题。
因为,
如果我采用第一种使用 log(1000)/log(10)
的方法,我得到:
>>> log(1000)
6.907755278982137
>>> log(10)
2.302585092994046
>>> 6.907755278982137/2.302585092994046
2.9999999999999996