【发布时间】:2018-06-01 19:03:13
【问题描述】:
我正在尝试在 javascript 中获取数字的位数,但我在网上找到的方程式遇到了一些极端情况。
这是我正在使用的,来自this site。
getNumDigits(val){
return val === 0 ? 1 : Math.floor(Math.log(Math.abs(val)) / Math.LN10 + 1);
}
但问题是,如果你输入一个像 1000 这样的数字,你会以某种方式得到一个 JavaScript 舍入错误,其中的值就像 3.999997
我注意到,只要您的数字不在 -1 和 1 之间,您只需将 1 添加到 Math.abs(val) 的 val 中,它就会适当地设置位数,但它看起来很乱。
我尝试将 val 转换为字符串并获取长度,但在使用类似 0.2 的小数的情况下,这不起作用 - 作为它会说长度是3。
有什么好的方程式/函数可以使用?
【问题讨论】:
-
我得到了
3的真实值,用于1000。顺便说一句,为什么是自然对数?
标签: javascript math logarithm natural-logarithm