查找javascript中的位数

时间:2018-06-01 19:03:13

标签: javascript math logarithm natural-logarithm

我试图在javascript中获取一个数字的位数,但是我已经遇到了一些我在网上发现的方程式的边缘情况。

以下是我this site使用的内容。

POST

但问题是,如果你输入一个像1000这样的数字,你会以某种方式得到一个javascript舍入错误,其值如getNumDigits(val){ return val === 0 ? 1 : Math.floor(Math.log(Math.abs(val)) / Math.LN10 + 1); }

我注意到,只要您的数字不在-1和1之间,您只需将3.999997添加到Math.abs(val)中的val即可适当地设置位数,但它似乎很乱。

我已尝试将1转换为字符串,然后获取长度,但在小数点的情况下,这不起作用,您可以在其中使用val之类的东西 - 因为它会说长度是3。

使用什么好的等式/函数?

1 个答案:

答案 0 :(得分:1)

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

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

console.log(getNumDigits(2.5245234))