查找 javascript 中的位数

Finding number of digits in javascript

我正在尝试获取 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.

什么是好的方程式/函数?

将数字设为字符串并使用正则表达式仅对数字进行计数是可行的。

function getNumDigits(val) {
  return (`${val}`.match(/\d/g) || []).length
}

console.log(getNumDigits(2.5245234))