浮動小数点の誤差
研修でうまくいかなかったのはこれが原因だったのかー。
研修で困ったやーつ。
たしかMath.random()でランダムな値を作って、
それを使ってif文の分岐を作ったんですが、なにやらちゃんと分岐してくれない・・・
ディベロッパーツールで値を見てみると、
0.1が、0.1000000000028とかになってる。
0.1よりちょっと大きいから条件式でうまくいかない。
ふむむむ。
コンソールってみる。
> 0.1 + 0.2 == 0.3
これはfalseになります。
> 0.1 + 0.2 == 0.3
false
> 0.1 + 0.2
で
ターン(enter)
すると
> 0.1 + 0.2 0.30000000000000004
ふむむむ。(なんだあの4・・・)
パーフェクトJS(p51-p52)
"浮動小数点数は、ほとんどの場合小数点以下を正確に表現できない。"
近似値を出していて正確な値は出せない、らしい。
他の言語でも同様らしいので、もしかして常識?