我的剧本:
var dblTemp = 365 * 24 * 60 * 60 * 12000000000; //378432000000000000
return Math.log(dblTemp);
我的期望值是~17.5779878529829
。我通过使用我的Windows计算器输入378432000000000000
然后按log
功能来推导出这一点。
如果我运行我的脚本,它将返回~40.47481279510905
。
我是否错误地使用Math.log
?为什么我的javascript为Math.log
返回的值不正确?
答案 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;
}
所有浏览器都支持
答案 1 :(得分:0)
因为当您的计算器使用基础Math.log()
时,e
使用10
的基数。所以你想使用Math.log10
:
return Math.log10(dblTemp); // 17.577987852982993