JavaScript中的整数长度

9

愚蠢的问题时间到了!

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

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

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

2
因为'length'表示的是字节长度,在字符串中它也有通常意义上的'length'。整数具有标准数据类型长度,所以不需要计算它们的'length'。如果你是指int类型的字符串表示长度,那么很明显你首先需要将其转换为字符串。 - Alma Do
因为如果您获取任何字符串、数组等的长度,函数将返回一个整数值,并且默认情况下数字具有整数数据类型(例如:var value = 1200; console.log(typeof(value)))。 - Abdul Rehman Kaim Khani
4个回答

11

好的,我认为为数字提供长度属性是没有帮助的。重点是改变其表示方式不会改变字符串的长度。

例如,您可以拥有类似于这样的字符串:

var b = "sometext";

并且只有在实际更改字符串本身时,其长度属性才会发生改变。

但是数字不同。

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

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

很明显一个数可以有多个表示方法,因此,如果您使用数字属性长度,它将随着数字的表示方式而改变。


正确,整数值及其长度取决于数字系统的基数。 - Clergyman
也许不是非常有用,但我可以使用它。在解析用户文本行时,我可以使用这样的功能告诉我parseInt函数从源字符串中使用了多少距离,而无需重新将其转换为字符串以查看(例如:解析x+2464+y*42)。 - Pimp Trizkit

7

您需要先设置变量toString(),如下所示:

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

console.log(len);

4
您可以使用 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);
< p > | 0与Math.floor做的是相同的事情。


1
请注意,使用数字0调用此函数会返回“-Infinity”。同时,负数则会返回“NaN”。 - Kerwin Sneijders

0

const num = 18.5;
const len = `${num.toString()}`.length;

console.log(len);


你应该添加解释。 - Super Kai - Kazuya Ito

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接