【问题标题】:integer length in javascriptjavascript中的整数长度
【发布时间】:2013-08-09 08:43:50
【问题描述】:

愚蠢的提问时间!

我知道在 JavaScript 中你必须将整数转换为字符串:

var num = 1024;
len = num.toString().length;
console.log(len);

我的问题是:为什么 JavaScript 中没有整数的长度属性?它是不是经常使用的东西?

【问题讨论】:

  • 因为 'length' 是以字节为单位的长度,对于字符串来说,它具有通常的 'length' 的含义。整数具有标准数据类型长度,因此无需计算它们的“长度”。如果您指的是 int 的字符串表示长度 - 很明显您应该首先将其转换为字符串。
  • 因为如果你得到任何字符串、数组等的长度,函数将返回一个整数值,并且默认数字有整数(即:var value = 1200; console.log(typeof(value) ) 日期类型。

标签: javascript string properties integer


【解决方案1】:

好吧,我认为为数字提供长度属性不会有帮助。 关键是字符串的长度不会因为改变它的表示而改变。

例如你可以有一个类似这样的字符串:

var b = "sometext";

除非你真正改变字符串本身,否则它的长度属性不会改变。

但数字不是这样的。

同一个数字可以有多种表示。例如:

 var a = 23e-1;
and 
 var b = 2.3;

所以很明显,同一个数字可以有多种表示形式 因此,如果你有带数字的长度属性,它必须随着数字的表示而改变。

【讨论】:

  • 是的,整数值和长度取决于数字系统的基数。
  • 也许不是非常有用。但是,我可以使用它。在解析一行用户文本时;我会使用这样的功能来告诉我parseInt 函数与源字符串之间的距离。无需将其重新转换回字符串即可查看。 (即:解析x+2464+y*42
【解决方案2】:

你必须先设置变量toString(),像这样:

var num = 1024,
str = num.toString(),
len = str.length;

console.log(len);

【讨论】:

    【解决方案3】:

    您可以使用 Math.log10(number) 找到数字的“长度”

    var num = 1024;
    var len = Math.floor(Math.log10(num))+1;
    console.log(len);
    

    或者如果您想与旧版浏览器兼容

    var num = 1024;
    var len = Math.log(num) * Math.LOG10E + 1 | 0; 
    console.log(len);
    

    | 0 的作用与 Math.floor 相同。

    【讨论】:

    • 请注意,当使用号码0 调用它时,这会导致:-Infinity。也返回 NaN 表示否定
    猜你喜欢
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 2011-03-05
    • 2014-11-04
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多