获取float';JavaScript中的s长度
我试图在JavaScript中获取获取float';JavaScript中的s长度,javascript,math,floating-point,undefined,precision,Javascript,Math,Floating Point,Undefined,Precision,我试图在JavaScript中获取浮点值的长度,但我无法使其作为字符串工作: var length = ((x + '').toString().length; 因为,undefined是变量的一个非常规则且可能的值,所以我最终得到了“undefined”的长度 我看到了各种可能的解决办法: 使用number.isFloat()在数组中分配每个float的数字,并计算数组的长度 通过找到类似的数学解:(Math.log10((newValue^(newValue>>31))-(newValu
浮点值的长度,但我无法使其作为字符串工作:
var length = ((x + '').toString().length;
因为,undefined
是变量的一个非常规则且可能的值,所以我最终得到了“undefined”
的长度
我看到了各种可能的解决办法:
- 使用
number.isFloat()
在数组中分配每个float
的数字,并计算数组的长度
- 通过找到类似的数学解:
(Math.log10((newValue^(newValue>>31))-(newValue>>31))|0)+1
,但应用于浮点值,而不仅仅是整数
- 循环每个数字的伪函数
- 使用一个特定的数学库(),在我看来这是最好的解决方案,因为我无法找到任何可以执行此任务而不损害性能的工作函数
首先检查数字是否为数字,然后返回其字符串表示形式的长度:
let number=[undefined,null,12345,1.2345,'12345','1.2345','abcd','1.2345abcd','0.1+0.2,0.3,{},[]
console.log(number.map)(number=>{
返回编号===null | | isNaN(编号)?0:number.toString().length;
}));
首先检查number
是否为数字,然后返回其字符串表示形式的长度:
let number=[undefined,null,12345,1.2345,'12345','1.2345','abcd','1.2345abcd','0.1+0.2,0.3,{},[]
console.log(number.map)(number=>{
返回编号===null | | isNaN(编号)?0:number.toString().length;
}));代码>要查找浮点数的长度而不遇到未定义的问题,请使用try、catch和throw
var num=document.getElementById(“num”).value;
var result=document.getElementById(“结果”).value;
var parsedFloat;
函数foo(){
num=document.getElementById(“num”).value;
结果=document.getElementById(“结果”).value;
试一试{
如果(num==parseFloat(num)&&num!==undefined){//如果数字等于变成浮点的数字;“1.2”变为1.2,“thiswontwork”变为NaN(不是数字)
parsedFloat=num;
if(parsedFloat!=parseInt(parsedFloat)){//如果它是浮点,而不是整数
parsedFloat=parsedFloat.substring(1);//删除最后一个数字,以便由于小数点而减去长度
}//目前,我没有“.0”的任何内容。
结果=parsedFloat.length;
}否则{
抛出“必须是一个数字!”;
}
}捕捉(错误){
结果=错误;
}最后{
document.getElementById(“结果”).value=result;
}
}
点击我代码>要查找浮点数的长度而不遇到未定义的问题,请使用try、catch和throw
var num=document.getElementById(“num”).value;
var result=document.getElementById(“结果”).value;
var parsedFloat;
函数foo(){
num=document.getElementById(“num”).value;
结果=document.getElementById(“结果”).value;
试一试{
如果(num==parseFloat(num)&&num!==undefined){//如果数字等于变成浮点的数字;“1.2”变为1.2,“thiswontwork”变为NaN(不是数字)
parsedFloat=num;
if(parsedFloat!=parseInt(parsedFloat)){//如果它是浮点,而不是整数
parsedFloat=parsedFloat.substring(1);//删除最后一个数字,以便由于小数点而减去长度
}//目前,我没有“.0”的任何内容。
结果=parsedFloat.length;
}否则{
抛出“必须是一个数字!”;
}
}捕捉(错误){
结果=错误;
}最后{
document.getElementById(“结果”).value=result;
}
}
点击我代码>对您来说,浮点的“长度”到底是多少?你需要它干什么?像这样?(仅限点)那么const len=v=>isNaN(v)呢?0:String(+v).length
或const len=v=>isNaN(v)?0:字符串(+v).length-(+v===数学层(v))
如果您不想计算点,或者const len=v=>String(v).match(/\d/g).length
只计算传递值中的数字。为什么不能使用String来计算长度?如果您指的是像未定义的,那么代码段会处理这些值。对于不是数字的所有内容,它都返回0。@Thomas注意到第一个选项不适用于null
,因为isNaN(null)
返回false
,而String(+null)
返回'0'
,因此它是。length
将是1而不是0。第二种方法也行。对你来说,浮点数的“长度”到底是多少?你需要它干什么?像这样?(仅限点)那么const len=v=>isNaN(v)呢?0:String(+v).length
或const len=v=>isNaN(v)?0:字符串(+v).length-(+v===数学层(v))
如果您不想计算点,或者const len=v=>String(v).match(/\d/g).length
只计算传递值中的数字。为什么不能使用String来计算长度?如果您指的是像未定义的,那么代码段会处理这些值。对于不是数字的所有内容,它都返回0。@Thomas注意到第一个选项不适用于null
,因为isNaN(null)
返回false
,而String(+null)
返回'0'
,因此它是。length
将是1而不是0。第二种方法会奏效。