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