結論
小数に2進数で表現できないものが多くあるから。
どうして2進数で表現できない少数があるのか
例えば十進数で0.9の場合にそれを2進数で表現しようとすると、
小数点第一位 だと 1/2(0.5) 小数点第二位 だと 1/4(0.25) 小数点第三位 だと 1/8(0.125)と 少しずつ 0.5 + 0.25 + 0.125 = 0.875と0.9に寄っては行くが、
それをfloat型(単精度浮動小数点形式)の仮数部23回をおこなっても0.9と一致することはない。
検証JSコード
1 | var n = 0; |