前言
我们都遇到过如下计算结果:
为什么会出现如此结果?难道不为 0.3 吗?这涉及到 js 的精度问题。
首先 js 的数字类型采用基于 IEEE 754 标准来实现的(也称为浮点数)。其选用的精度格式是:双精度格式(64 位的二进制数)
这篇就稍稍深入了解下双精度浮点数,以及有关于数 Number 的问题。
IEEE 754 标准
IEEE 二进制浮点数算术标准(IEEE 754),是最广泛使用的浮点数运算标准,为许多 CPU 与浮点运算器所采用。
这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number),一些特殊数值((无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种例外状况(包括例外发生的时机与处理方式)。
规定了四种表示浮点数值的方式:单精确度(32 位)、双精确度(64 位)、延伸单精确度(43 比特以上,很少使用)与延