为什么我的javascript为Math.log返回了不正确的值?

时间:2015-11-02 17:17:43

标签: javascript math

我的剧本:

var dblTemp = 365 * 24 * 60 * 60 * 12000000000; //378432000000000000

return Math.log(dblTemp);

我的期望值是~17.5779878529829。我通过使用我的Windows计算器输入378432000000000000然后按log功能来推导出这一点。

如果我运行我的脚本,它将返回~40.47481279510905

我是否错误地使用Math.log?为什么我的javascript为Math.log返回的值不正确?

2 个答案:

答案 0 :(得分:1)

您的计算器会计算基数10 对数。 Math.log计算base e对数。

如果您想获得与计算器相同的结果,请使用Math.log10

var dblTemp = 365 * 24 * 60 * 60 * 12000000000; //378432000000000000

document.write(Math.log10(dblTemp));

如果您的运行时不支持Math.log10,您可以define the function yourself

function log10(val) {
  return Math.log(val) / Math.LN10;
}
所有浏览器都支持

Math.LN10

答案 1 :(得分:0)

因为当您的计算器使用基础Math.log()时,e使用10的基数。所以你想使用Math.log10

return Math.log10(dblTemp); // 17.577987852982993