-1

我正在尝试在 javascript 中获取数字的位数,但是我在网上找到的方程式遇到了一些极端情况。

这是我正在使用的,来自这个网站

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。

使用什么好的方程/函数?

4

1 回答 1

1

将数字设为字符串并使用正则表达式仅计算数字可以工作。

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

console.log(getNumDigits(2.5245234))

于 2018-06-01T19:07:09.210 回答