数字类型与算术运算
JavaScript 不区分整型和浮点型数字,JavaScript 中的所有数字均用浮点数值进行表示(IEEE-754 64位浮点数表示法),能够表示的整数范围是 -2^53 ~ 2^53。
整型
支持十进制、十六进制(0x开头)和八进制(0开头):
255 // 十进制
0xff // 十六进制 15*16 + 15 = 255
0377 // 八进制 3*64 + 7*8 + 7 = 255 某些 JavaScript 的实现不支持八进制,比如 ES6
浮点型
支持实数法和指数法标记:
3.14
.333
3.16e23
算术运算
除了支持加(+
)、减(-
)、乘(*
)、除(/
)、求余(%
)操作之外,还可以通过 Math
对象进行更复杂的操作:http://www.w3school.com.cn/js/jsref_obj_math.asp。
JavaScript 中的运算在溢出或被零整除时不会报错:
- 上溢返回 Infinity
- 下溢返回 -Infinity
- 被零整除返回 Infinity 或 -Infinity,零除零则返回 NaN
JavaScript 预定义了全局变量 Infinity 和 NaN 分别用于表示正无穷大和非数字值。
JavaScript 中的 NaN 值有一些特殊,它和任何值都不想等,包括自身。
二进制浮点数和四舍五入错误
由于 JavaScript 中所有数字都是通过浮点数表示,这是一种二进制表示法,所有在 JavaScript 中使用实数时,常常是真实值的一个近似表示,但是这种表示法可以精确表示分数,如 1/2、1/8,不过我们常用的分数是十进制,二进制浮点数并不能精确表示这类分数,所以我们常常在 JavaScript 中进行算术运算时,得到一些意想不到的结果:
这种舍入精度问题在所有同样的浮点数表示法语言中都存在,需要在实际开发中注意这个问题。
No Comments