JavaScript 使用 number
类型来表示整数和浮点数。从技术上讲,JavaScript number
类型使用 IEEE-754 格式。
ES2020 引入了一种新的原始类型 bigint
,表示值大于 253 – 1 的大整数。为了支持各种类型的数字,JavaScript 使用不同的数字面量格式。
整数
代码 let counter = 100;
展示如何声明一个十进制整数的变量:
let counter = 100;
整数可以用以下格式表示:
- 八进制(基数 8)
- 十六进制(基于 16)
当你在算术运算中使用八进制和十六进制数时,JavaScript 将它们视为十进制数。
八进制数
八进制数字以数字零 0 开头,后跟八进制 从 0 到 7 的数字 。
let num = 071;
console.log(num);
57
如果八进制数包含不在 0 到 7 范围内的数字,JavaScript 引擎将忽略 0 并将数字视为十进制数。
let num = 080;
console.log(num);
80
这种隐式行为可能会导致问题。因此,ES6 引入了一种新的八进制字面量,它以 0o
开头,后八进制数字序列,从 0 到 7。
let num = 0o71;
console.log(num);
57
如果您在之后输入无效数字0o
,JavaScript 将抛出语法错误 ^^SyntaxError: Invalid or unexpected token。
let num = 0o80;
console.log(num);
^^SyntaxError: Invalid or unexpected token
十六进制数
十六进制数字以 0x 或 0X 开头,后跟任意数量的十六进制数字, 0 到 9,以及 a 到 f。
let num = 0x1a;
console.log(num);
26
浮点数
要定义浮点数,您需要包含一个小数点和至少一个数字。例如:
let price = 9.99;
let tax = 0.08;
let discount = .05; // 有效但不推荐
当你有一个非常大的数字时,你可以使用 e-notation。E-notation 表示一个数字应该乘以 10 的幂。
let amount = 3.14e7;
console.log(amount);
31400000
3.14e7
表示 3.14
乘以 107。同样,您可以使用 E-notation 来表示非常小的数字。
let amount = 5e-7;
console.log(amount);
0.0000005
5e-7
表示取 5 除以 10,000,000,也就是 5e-7
表示除以 107。
此外,JavaScript 会自动将小数点后至少有六个零的任何浮点数转换为 E-notation 记数法。
let amount = 0.0000005;
console.log(amount);
5e-7
浮点数精确到小数点后 17 位。对浮点数进行算术运算时,通常会得到近似结果。例如:
let amount = 0.2 + 0.1;
console.log(amount);
巨大的整数
JavaScript bigint
从 ES2022 开始引入此类型。bigint
类型存储值大于 2 ·53 – 1 的整数。一个大整数字面量在整数的末尾有一个字符 n
。
let pageView = 9007199254740991n;
结论
- JavaScript Number 类型表示整数和浮点数。