3.1
JS不区分整数值和浮点数值,所有数字均用浮点数值表示。
JS采用IEEE的64位浮点格式表示数字。
整数范围:-2^53--2^53。
3.1.1
ECMAScriptz不支持八进制直接量,但JS的某些实现可以允许采用八进制,以0开始,但是最好不用八进制
3.1.2
算数运算符: + - * / %
JS支持更加复杂的算数运算符,通常作为Math对象的属性定义的函数和常量来实现。
如:Math.pow(2,53), Math.exp(3)
JS中算数运算在溢出(overflow),下溢(underflow)或者被0整除时,不会报错。
当溢出时,结果为无穷大(+-Infinity)
当下溢时,结果为0
当被0整除时,简单的返回无穷大
0/0, Infinity/Infinity, 负数开方或者算数运算符与无法转换为数字的操作数一起作用时,返回NaN(not a number)。
JS预定义全局变量:Infinity和NaN,只读。
NaN和任何值都不相等,包括他本身。
无法用 X == NaN 来判断X是否为NaN,应该采用 X != X 来判断。isNaN()作用与此类似。
isFinite()在参数不是NaN,Infinity或者-Infinity时,返回true。
负0与正0值是相等的,只有作为除数时产生不同的Infinity(+-)。
3.1.3
JS中使用实数时,常常只是真实值的一个近似表示。
JS中数字具有足够的精度,但并不精确。
如:var x = .3 - .2;
var y = .4 - .3;
x == y => flase
任何使用二进制浮点数的编程语言都有这个问题。