重複の可能性:
ルビー浮動小数点エラー
Rubyでは、5.0から4.7を引くと、0.3の結果が期待されますが、次のようになります。
~ $ irb
1.9.2p290 :001 > 5.0 - 4.7
=> 0.2999999999999998
バグではなく、これには理由があると思いますか?BigDecimal
オブジェクトを使用しても同じ結果が得られます。結果に使用する唯一のオプションはround
ありますか?
重複の可能性:
ルビー浮動小数点エラー
Rubyでは、5.0から4.7を引くと、0.3の結果が期待されますが、次のようになります。
~ $ irb
1.9.2p290 :001 > 5.0 - 4.7
=> 0.2999999999999998
バグではなく、これには理由があると思いますか?BigDecimal
オブジェクトを使用しても同じ結果が得られます。結果に使用する唯一のオプションはround
ありますか?
フロートは精度を失います。それについては何もできません。したがって、次を使用します。
(5.0 - 4.7).round(1)
さらに精度が必要な場合:
(0.50 - 0.47).round(2)
バグではありません。これが浮動小数点演算の仕組みです。詳細はこちら: http: //floating-point-gui.de/