log(x)在Python中返回意外的结果

log(x)在Python中返回意外的结果,python,math,logarithm,Python,Math,Logarithm,我正在尝试使用Python进行一些基本的dB计算。如果我使用Excel或科学计算器: 20*log(0.1) = -20 在Python中: 20*log(0.1) = -46.0517018599 为了进一步简化,Excel和Scientific calc: log(0.1) = -1 Python: log(0.1) = -2.30258509299 我的脚本以 import math log = math.log 有人能解释一下为什么会这样以及我如何修复它吗?math.log实

我正在尝试使用Python进行一些基本的dB计算。如果我使用Excel或科学计算器:

20*log(0.1) = -20
在Python中:

20*log(0.1) = -46.0517018599
为了进一步简化,Excel和Scientific calc:

log(0.1) = -1
Python:

log(0.1) = -2.30258509299
我的脚本以

import math

log = math.log

有人能解释一下为什么会这样以及我如何修复它吗?

math.log
实际上是
ln
(基数为e)。要获得预期的结果,请使用
math.log(0.1,10)
math.log10(0.1)
如果需要以10为底的对数,则必须使用
math.log10(0.1)

文件是


FORTRAN、C、C++、java、TCL等,他们都使用log作为基础-N对数(自然对数)

旁注:可以从数学导入日志<代码> >保存自己的一行。这一点非常重要,尤其是在使用对数函数时,因为
log()
可以表示基数10或基数
e
,具体取决于程序员。或者,您可以使用
math.log10()。我已经更新了我的答案。谢谢你的回答,它确实解决了我的问题,现在它的展示让我觉得有点愚蠢,因为我实际上从阅读文档中接近了这个答案,但只是没有正确地实现它!!然而,我现在只需使用import math log=math.log10开始我的代码,而不是在方程中使用x,log(x)是从使用变量的简单除法推导出来的,这会导致额外的复杂性,需要我学习/使用float函数。现在看起来是这样的>>>再次感谢!