length
是一个属性,而不是一个方法。你不能调用它,因此你不需要括号:()
function getlength(number) {
return number.toString().length;
}
更新:如注释中所述,上述示例不适用于浮点数。为了使其正常工作,我们可以删除带有 的句点,或者使用正则表达式计算数字:。String(number).replace('.', '').length
String(number).match(/\d/g).length
就速度而言,在给定数字中获取位数的最快方法是在数学上做到这一点。对于正整数,有一个很棒的算法:log10
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
对于所有类型的整数(包括负整数),@Mwr247都有一个出色的优化解决方案,但要小心使用 ,因为许多旧版浏览器都不支持它。因此,替换为将解决兼容性问题。Math.log10
Math.log10(x)
Math.log(x) * Math.LOG10E
由于众所周知的浮点数学行为,为十进制数创建快速的数学解决方案并不容易,因此转换为字符串的方法将更容易和万无一失。正如@streetlogics快速转换可以通过简单的数字到字符串串联来完成,从而导致替换解决方案转换为:
var length = (number + '').replace('.', '').length; // for floats