JavaScript 数字

预计阅读时间1 分 109 views

与某些编程语言不同,JavaScript 不区分整数和浮点数,所有数字都采用 IEEE 754 标准的双精度浮点数 表示:

  • 每个数字占用 64 位内存空间。
  • 可以表示极大或极小的数值,范围约为 ±10^-308±10^308
  • 但也存在精度限制,只能精确表示 ±(2^53 - 1) 范围内的整数。超过这个范围的整数运算可能会出现精度丢失。
let integer = 42;          // 整数
let float = 3.14159;     // 浮点数

特殊的数字值:Infinity 和 NaN

除了常规的数值,JavaScript 还提供了三个特殊的数字值:

  • Infinity (正无穷): 表示大于任何有限数字的值,例如 1 / 0 的结果。
  • -Infinity (负无穷): 表示小于任何有限数字的值,例如 -1 / 0 的结果。
  • NaN (非数字): 表示无效的数学运算结果,例如 0 / 0parseInt("hello")
console.log(1 / 0);        // Infinity
console.log(-1 / 0);       // -Infinity
console.log(0 / 0);        // NaN
console.log(parseInt("abc")); // NaN

BigInt:驾驭超大整数

为了处理超出 Number 类型表示范围的整数,ES2020 引入了 BigInt 类型。BigInt 可以表示任意大小的整数,不会出现精度丢失的问题。

let hugeNumber = 1234567890123456789012345678901234567890n; //  末尾的 "n" 表示 BigInt

需要注意的是,BigIntNumber 是两种不同的类型,不能直接进行混合运算。

BigInt的表示范围在理论上是没有上限的,因为它不是基于固定的位数来表示整数,而是可以动态地根据需要分配内存。在实际应用中,BigInt能够表示的数字大小,受到计算机物理内存(RAM)的限制。

数字进制

除了常见的十进制,JavaScript 还支持二进制、八进制和十六进制表示数字:

  • 二进制:0b0B 开头,例如 0b1010 表示十进制的 10。
  • 八进制:0o0O 开头 (ES6),例如 0o12 表示十进制的 10。
  • 十六进制:0x0X 开头,例如 0xA 表示十进制的 10。
let decimal = 10;         //  十进制
let binary = 0b1010;     //  二进制
let octal = 0o12;        //  八进制
let hexadecimal = 0xA;    //  十六进制

Number 对象

JavaScript 提供了内置的 Number 对象,包含一些用于操作数字的属性和方法。

常用属性

属性描述
Number.MAX_VALUE表示JavaScript中可以表示的最大数值。
Number.MIN_VALUE表示JavaScript中可以表示的最小数值。
Number.NaN表示“不是一个数字”的特殊值。
Number.NEGATIVE_INFINITY表示负无穷大,当数值溢出时会返回这个值。
Number.POSITIVE_INFINITY表示正无穷大,当数值超出最大值时会返回这个值。
Number.EPSILON表示1与大于1的最接近的、能被JavaScript安全表示的数之间的差值。
Number.MIN_SAFE_INTEGER表示JavaScript中可以安全表示的最小整数。
Number.MAX_SAFE_INTEGER表示JavaScript中可以安全表示的最大整数。

常用方法

下面是 Number 对象提供的一些方法,可以帮助我们进行数字的解析和验证:

方法描述
Number.parseFloat()将一个字符串参数解析成一个浮点数,与全局的parseFloat()函数功能相同。
Number.parseInt()将一个字符串解析成一个指定基数的整数,与全局的parseInt()函数功能相同。
Number.isFinite()判断传递的值是否是一个有限数字。
Number.isInteger()判断传递的值是否是一个整数。
Number.isNaN()判断传递的值是否是NaN。这是一个比全局isNaN()更稳健的版本。
Number.isSafeInteger()判断传递的值是否是一个安全整数,即在MIN_SAFE_INTEGERMAX_SAFE_INTEGER范围内的整数。
分享此文档

JavaScript 数字

或复制链接

本页目录