我试图在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。
使用什么好的等式/函数?
答案 0 :(得分:1)
将数字设为字符串并使用正则表达式仅计算数字可以起作用。
function getNumDigits(val) {
return (`${val}`.match(/\d/g) || []).length
}
console.log(getNumDigits(2.5245234))