IEEE 754 浮点 - 为什么它有效?
IEEE 754 floating point - why does this work?
鉴于以下情况:
.1 + .2 === .3 // false
1 * .3 === .3 // true
...前者不会导致0.3
,因为其中一个或多个操作数无法用IEEE 754双精度浮点数精确表示,所以结果几乎但不完全是0.3
.
为什么后者returntrue
。是因为 0.3
正好可以用 IEEE 754 双精度浮点数表示吗?
0.3 不能完全表示,但 1.0 可以。根据 IEEE 舍入到最近的规则,任何数字乘以 1 必须 return 等于其自身的原始值。
鉴于以下情况:
.1 + .2 === .3 // false
1 * .3 === .3 // true
...前者不会导致0.3
,因为其中一个或多个操作数无法用IEEE 754双精度浮点数精确表示,所以结果几乎但不完全是0.3
.
为什么后者returntrue
。是因为 0.3
正好可以用 IEEE 754 双精度浮点数表示吗?
0.3 不能完全表示,但 1.0 可以。根据 IEEE 舍入到最近的规则,任何数字乘以 1 必须 return 等于其自身的原始值。