Skip to content

Number

  • 在JS中所有的数值都是 Number 类型

  • 包括整数和浮点数(小数)

  • JS中可以表示的数字最大值 Number.MAX_VALUE,(最小值Number.MIN_VALUE

如果使用 Number 表示的数字超过了最大值,则会返回一个Infinity,标识正无穷

Infinity是一个字面量

typeof Infinity 也会返回number

  • NaN是一个特殊的数字,表示Not A Number

typeof NaN 也会返回number

NOTE

在JS中整数的运算基本可以保证精确

WARNING

如果使用JS进行浮点数运算,可能得到一个不精确的结果

CAUTION

0.1+0.2 = 0.30000000000000004

  • 这不是 JavaScript 独有的现象,而是使用二进制浮点运算的程式语言都会遇到的问题。而 JavaScript 中用到小数点时,因为 JavaScript 是采用 IEEE 754 六十四位元双精度浮点数,所以会遇到这个问题。

  • 在一般生活中,我们多数情况是使用十进位,而要能够精确表达十进位,而 10 的质因数是 5 与 2,所以只有 1/2、1/4、1/5、1/8、1 /10 这几个数能够被十进位的小数清楚表达;而像是 1/3、1/6、1/7、1/9 则不行。以 1/3 来说,我们知道会是 0.33333333 一路到无穷无尽。

  • 而对于二进位制来说,只有 1/2、1/4、1/8 等可以被清楚表达,其他则会无穷无尽地延伸下去,然而因为电脑的记忆体有限,程式语言会分配给一个数字的记忆体也是有限,所以在精准度的表达下会有其限制,这也是导致 0.30000000000000004 这个怪异数字的原因。

Released under the MIT License.