JavaScript不区分整数和浮点数,所有的数字都是用浮点数表示。JavaScript能表示的数字范围我觉得没必要记住,绝对够你平常使用的了。(如果你是从事科学研究或者大数据计算的另说)。
1.整数
JavaScript可以接受10进制和16进制的数字。16进制数字以“0X” 或“0x”开头,由0-9和A-F(a-f)组成。
10进制:390
16进制:0xCAFE7876 0XA567
ES标准不支持8进制的数字,但是某些JavaScript的实现可以支持8进制。正因为此,最好还是不要使用8进制的数字了。
2.浮点数
有两种表示方法。
3.14
0.09
1.34e3=1340
9e-2=0.09
E(e)及后面的数字表示10的次方。这个很好理解吧。
3.运算符
+-*%这些基本的都不说了,除此之外还支持复杂的计算。这些计算都放在Math对象中了。比如最大值,最小值,四舍五入,三角函数等。
JavaScript在计算结果溢出时不会报错(无论超出JavaScript表示数值的上边界或者下边界),除以0时也不会报错。
超出上边界:返回 Infinity(正无穷大)
超出下边界:返回 -Infinity(负无穷大)
除以0:返回Infinity(正数除以0) -Infinity(负数除以0) NaN
(0除以0)
还有一种下溢的情况,就是计算结果接近于0但是又超过JavaScript表达的范围。
正数接近于0:返回0
负数接近于0:返回-0
非数字值NaN是Not a Number的缩写,这个值很特殊。它和任何值都不相等包括其自身。可以借助函数isNaN()来判断一个值是不是NaN。
4.浮点数的错误
JavaScript采用的是IEEE-754浮点数表示法,这是一个二进制的表示法。它能够表示二进制的分数比如1/2, 1/8等,但是当表示十进制分数时,就无法精确的表示了。
JavaScript的精度可以让数值极其接近于十进制分数,但是仍然是一个近似值。这样就会带来一些问题。举个栗子:
console.log(0.3-0.2 != (0.2-0.1) ) //true