# 1.计算机的运算方式

javascript 中整数和浮点数都为 Number 类型,都以 64 位浮点数形式存储,计算机在做数值运算时,先转换为二进制,再进行运算

整数的二进制转换:除 2 取余数,若商不为 0 则继续对它除 2,当商为 0 时则将所有余数逆序排列

浮点数点二进制转换:整数部分按整数二进制转换,小数部分,乘 2 取整数部分,若小数不为 0 则继续乘 2,直至小数部分为 0 将取出的整数位正序排列。(若小数部分无法为零,根据有效位数要求取得相应数值,位数后一位 0 舍 1 入进行取舍)

例如: 0.1 转二进制

0.1 * 2 = 0.2 - - - - - - - - - - 取 0

0.2 * 2 = 0.4 - - - - - - - - - - 取 0

0.4 * 2 = 0.8 - - - - - - - - - - 取 0

0.8 * 2 = 1.6 - - - - - - - - - - 取 1

0.6 * 2 = 1.2 - - - - - - - - - - 取 1

0.2 * 2 = 0.4 - - - - - - - - - - 取 0

...

二进制表示:0.000110.....

当出现无限循环的时候,js 数值运算就会出现相应的误差

# js 精度

IEEE 754 标准定义了单精度和双精度浮点格式,每个浮点数均由 3 个部分组成:符号位 S,指数部分 E 和尾数部分 M

# 单精度

1 位符号位,8 位指数位,23 位有效位

# 双精度

1 位符号位,11 位指数位,52 位有效位

Last Updated: 7/16/2020, 6:11:09 PM