Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中查找位数_Javascript_Math_Logarithm_Natural Logarithm - Fatal编程技术网

在javascript中查找位数

在javascript中查找位数,javascript,math,logarithm,natural-logarithm,Javascript,Math,Logarithm,Natural Logarithm,我试图在javascript中获得一个数字的位数,但我在网上找到的方程式中遇到了一些边缘情况 这是我用的,来自 但问题是,如果输入1000这样的数字,不知何故会出现javascript舍入错误,其中的值显示为3.99997 我注意到,只要您的数字不在-1和1之间,您就可以在Math.abs(val)中向val添加1,它将适当地设置位数,但看起来很混乱 我试着将val转换成字符串,并获取长度,但对于十进制来说,这不起作用,比如说,使用0.2——长度是3 什么是好的方程式/函数?将数字设为字符串,并

我试图在javascript中获得一个数字的位数,但我在网上找到的方程式中遇到了一些边缘情况

这是我用的,来自

但问题是,如果输入1000这样的数字,不知何故会出现javascript舍入错误,其中的值显示为
3.99997

我注意到,只要您的数字不在-1和1之间,您就可以在Math.abs(val)中向val添加
1
,它将适当地设置位数,但看起来很混乱

我试着将
val
转换成字符串,并获取长度,但对于十进制来说,这不起作用,比如说,使用
0.2
——长度是3


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

将数字设为字符串,并使用正则表达式只计算数字可以起作用。 函数getNumDigits(val){ 返回(${val}`.match(/\d/g)| |[]).length }
log(getNumDigits(2.5245234))我得到
1000
3
的实际值。顺便说一句,为什么我们是自然主义者?
getNumDigits(val){
  return val === 0 ? 1 : Math.floor(Math.log(Math.abs(val)) / Math.LN10 + 1);
}