浮点数精度
# 浮点数精度
# 十进制转二进制
计算机中数据的存储都是采用二进制,十进制转二进制方法如下:
整数部分采用除2取余法
小数部分采用乘2取余法
# 数字类型
ECMAScript 中的 Number 类型使用 IEEE754 标准来表示整数和浮点数值。所谓 IEEE754 标准,全称 IEEE 二进制浮点数算术标准,这个标准定义了表示浮点数的格式等内容。
在 IEEE754 中,规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度、与延伸双精确度。像 ECMAScript 采用的就是双精确度,也就是说,会用 64 位来储存一个浮点数。
# 浮点数存储
根据IEEE754双精度的标准,一个浮点数分为3个部分:
符号位:占1位,存放0或1,0表示整数,1表示负数
对应二进制的的科学计数法的小数部分:占52位。如一个二进制为
10111.01111
,科学计数法表示为1.011101111 * 2 ^ 4
那么我们只用存小数点后的011101111
部分。对应二进制的的科学计数法的指数部分:占11位。指数部分有正有负,存储时将位数平分。11位平分就是
(2 ^ 11) / 2 - 1 = 1023
,可以存-1024 ~ 1023
之间的数。