数字
当一个数字直接出现在JavaScript中,则称之为数字直接量。
算术运算
算术运算在溢出、下溢或被零整除时不会报错。
当数字运算结果超过了JavaScript所能表示的数字上限(溢出),结果为一个特殊的无穷大值,在JavaScript中以Infinity表示。同样,当负数的值超过了负数范围,结果为负无穷大,以-Infinity表示。基于无穷大值的运算结果还是大值(保留符号)。
下溢(underflow)是当运算结果无限接近于零并比JavaScript能表示的最小值还小的时候发生的一种情形。这种情况下,JavaScript将会返回0。当一个负数发生下溢时,JavaScript返回一个特殊的值“负零”。这个值几乎和正常的零完全一样。
被零整除不会报错,只是简单地返回无穷大(Infinity)或负无穷大(-Infinity)。但是,零除以零是没有意义的,结果为NaN,无穷大除以无穷大、给任意负数作开方运算,或者算术运算符与不是数字或无法转换为数字的操作数一直使用进都将返回NaN。
非数字值NaN与任何值都不相等,包括自身。不能通过x==Nan判断变量x是否NaN,而用x!=x来判断,当且仅当x为NaN时才为true。
负零和正零相等。
二进制符点数和四舍五入错误
IEEE-754浮点数表示法(几乎被所有现代编程不应该采用),是一种二进制表示法,可以精确地表示分数。却不能精确表示十进制分数。
var x = .3 - .2;
var y = .2 - .1;
x == y; // false
x == .1; // false
y == .1; // true