明示的に浮動小数点を宣言する言語ではあたりまえの知識かもしれないけど、Javascriptを書いていて初めて知ったのでメモ。
※Javascriptはどのような数字でも常に浮動小数点として扱うので注意されたし。
// 0.1と0.2の和は0.3にならない > 0.1 + 0.2; 0.30000000000000004 // 当然下記の2パターンは一致しない > (0.1 + 0.2) == 0.3; false > (0.1 + 0.2) === 0.3 false // 下記も近似値 > 1/3; 0.3333333333333333 // 下記も近似値 > 10/3 - 3; 0.3333333333333335 // よって当然書きも一致しない > (10/3 - 3) == 1/3; false > (10/3 - 3) === 1/3; false
浮動小数点はそもそも小数点以下を正確に表現することができないらしい。正確に表現できる場合こそがむしろ例外的であり、ほとんどの数値は近似値で表現されているという点に注意されたし。