1

重複の可能性:
ルビー浮動小数点エラー

Rubyでは、5.0から4.7を引くと、0.3の結果が期待されますが、次のようになります。

~ $ irb
1.9.2p290 :001 > 5.0 - 4.7
 => 0.2999999999999998 

バグではなく、これには理由があると思いますか?BigDecimalオブジェクトを使用しても同じ結果が得られます。結果に使用する唯一のオプションはroundありますか?

4

2 に答える 2

6

フロートは精度を失います。それについては何もできません。したがって、次を使用します。

(5.0 - 4.7).round(1)

さらに精度が必要な場合:

(0.50 - 0.47).round(2)
于 2012-12-04T15:52:00.133 に答える
1

バグではありません。これが浮動小数点演算の仕組みです。詳細はこちら: http: //floating-point-gui.de/

于 2012-12-04T15:53:21.537 に答える