数字类型与算术运算


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 溢出或被零整除时不会报错

JavaScript 预定义了全局变量 Infinity 和 NaN 分别用于表示正无穷大和非数字值。

JavaScript 中的 NaN 值有一些特殊,它和任何值都不想等,包括自身。

二进制浮点数和四舍五入错误

由于 JavaScript 中所有数字都是通过浮点数表示,这是一种二进制表示法,所有在 JavaScript 中使用实数时,常常是真实值的一个近似表示,但是这种表示法可以精确表示分数,如 1/2、1/8,不过我们常用的分数是十进制,二进制浮点数并不能精确表示这类分数,所以我们常常在 JavaScript 中进行算术运算时,得到一些意想不到的结果:

JavaScript 舍入精度问题

这种舍入精度问题在所有同样的浮点数表示法语言中都存在,需要在实际开发中注意这个问题。


点赞 取消点赞 收藏 取消收藏

<< 上一篇: 概述

>> 下一篇: 日期和时间