JavaScript 只有一种数字类型。数字可以带有或不带有小数。
特大或特小的数字可以用科学(指数)表示法书写:
与许多其他编程语言不同,JavaScript 没有定义不同类型的数字,如整数、短整型、长整型、浮点型等。
JavaScript 数字始终存储为双精度浮点数,遵循国际 IEEE 754 标准。
此格式以 64 位存储数字,其中数字(分数)存储在位 0 到 51 中,指数存储在位 52 到 62 中,符号存储在位 63 中:
值(又名分数/尾数) | 指数 | 符号 |
---|---|---|
52 位(0 - 51) | 11 位 (52 - 62) | 1 位 (63) |
整数(没有句点或指数表示法的数字)最多精确到 15 位。
let x = 999999999999999; // x will be 999999999999999
let y = 9999999999999999; // y will be 10000000000000000
亲自试一试 »
小数位数最多为 17 位。
警告 !!
JavaScript 使用 + 运算符进行加法和连接。
数字已添加。字符串被连接起来。
如果将两个数字相加,结果将是一个数字:
如果添加两个字符串,结果将是字符串连接:
如果将数字和字符串相加,结果将是字符串连接:
如果添加一个字符串和一个数字,结果将是一个字符串连接:
一个常见的错误是预期结果为 30:
一个常见的错误是预期结果为 102030:
JavaScript 解释器从左到右工作。
首先添加 10 + 20,因为 x 和 y 都是数字。
然后 30 + "30" 被连接起来,因为 z 是一个字符串。
JavaScript 字符串可以包含数字内容:
let x = 100; // x is a number
let y = "100"; // y is a string
JavaScript 会尝试在所有数字运算中将字符串转换为数字:
这将起作用:
let x = "100";
let y = "10";
let z = x / y;
这也将起作用:
let x = "100";
let y = "10";
let z = x * y;
这会起作用:
let x = "100";
let y = "10";
let z = x - y;
但这是行不通的:
let x = "100";
let y = "10";
let z = x + y;
在最后一个示例中,JavaScript 使用 + 运算符来连接字符串。
NaN
是 JavaScript 保留字,指示数字不是合法数字。
尝试使用非数字字符串进行算术运算将导致NaN
(不是数字):
但是,如果字符串是数字,则结果将是数字:
您可以使用全局 JavaScript 函数isNaN()
判断一个值是否不是数字:
留意NaN
。如果你使用NaN
在数学运算中,结果也将是NaN
:
或者结果可能是像 NaN5 这样的串联:
NaN
是一个数字:typeof NaN
回报number
:
Infinity
(或者-Infinity
) 是当您计算的数字超出最大可能数字时 JavaScript 将返回的值。
let myNumber = 2;
// Execute until Infinity
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
亲自试一试 »
除以 0(零)也会生成Infinity
:
Infinity
是一个数字:typeof Infinity
回报number
。
如果数字常量前面有 0x,JavaScript 会将其解释为十六进制。
切勿写入带有前导零的数字(例如 07)。
如果数字以前导零书写,某些 JavaScript 版本会将数字解释为八进制。
默认情况下,JavaScript 将数字显示为基数 10小数点。
但您可以使用toString()
输出数字的方法基地2到基数 36。
十六进制是基数 16。小数是基数 10。八进制是基数 8。二进制是基地2。
let myNumber = 32;
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(12);
myNumber.toString(10);
myNumber.toString(8);
myNumber.toString(2);
亲自试一试 »
通常 JavaScript 数字是从文字创建的原始值:
let x = 123;
但数字也可以使用关键字定义为对象new
:
let y = new Number(123);
不要创建 Number 对象。
这个new
关键字使代码复杂化并降低执行速度。
数字对象可能会产生意想不到的结果:
注意之间的区别(x==y)
和(x===y)
。
比较两个 JavaScript 对象总是回报错误的。
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!