我要在JavaScript或jQuery中获得一个数字的长度?
我尝试过价值。长度没有任何成功,我需要先将其转换为字符串吗?
我要在JavaScript或jQuery中获得一个数字的长度?
我尝试过价值。长度没有任何成功,我需要先将其转换为字符串吗?
当前回答
是的,你需要转换为字符串,以找到长度。例如
var x=100;// type of x is number
var x=100+"";// now the type of x is string
document.write(x.length);//which would output 3.
其他回答
我一直在node.js中使用这个功能,这是我目前为止最快的实现:
var nLength = function(n) {
return (Math.log(Math.abs(n)+1) * 0.43429448190325176 | 0) + 1;
}
它应该处理正整数和负整数(也是指数形式),并应该以浮点数形式返回整数部分的长度。
下面的参考文献应该提供一些关于该方法的见解: Eric Weisstein;“数字长度。”来自MathWorld—Wolfram Web资源。
我相信一些位操作可以取代数学。但是jsperf显示Math. abs。Abs在大多数js引擎中工作得很好。
更新:正如评论中提到的,这个解决方案有一些问题:(
Update2(解决方案):我相信在某些时候精度问题开始出现,Math.log(…)*0.434…只是表现出人意料。但是,如果Internet Explorer或移动设备不是你的菜,你可以用Math代替这个操作。log10函数。在Node.js中,我写了一个快速的基本测试函数nLength = (n) => 1 + Math.log10(Math.abs(n) + 1) | 0;还有数学。Log10它像预期的那样工作。请注意数学。Log10不是普遍支持的。
有三种方法。
var num = 123;
alert(num.toString().length);
性能一(ie11中性能最好)
var num = 123;
alert((num + '').length);
数学(在Chrome和firefox中表现最好,但在ie11中最慢)
var num = 123
alert(Math.floor( Math.log(num) / Math.LN10 ) + 1)
这里有一个jspref http://jsperf.com/fastest-way-to-get-the-first-in-a-number/2
为了求长度,你必须把数字变成字符串
var num = 123;
alert((num + "").length);
or
alert(num.toString().length);
var x = 1234567;
x.toString().length;
这个过程也适用于浮点数和指数数。
如果不把整数转换成字符串,你可以做一个奇怪的循环:
var number = 20000;
var length = 0;
for(i = number; i > 1; ++i){
++length;
i = Math.floor(i/10);
}
alert(length);
演示:http://jsfiddle.net/maniator/G8tQE/