次の操作でこの値が得られるのはなぜですか:
14.99 + 1.5 = 16.490000000000002
16.49になると思います。これらの余分な小数を避けるにはどうすればよいですか?
次の操作でこの値が得られるのはなぜですか:
14.99 + 1.5 = 16.490000000000002
16.49になると思います。これらの余分な小数を避けるにはどうすればよいですか?
これが浮動小数点演算のしくみです。まだオブジェクトである丸められた数値が必要な場合は、次のFloat
ことができます
result.round(2) #=> 16.49
または、文字列だけが必要な場合:
"%0.2f" % result
これは Ruby によるものではなく、コンピューターでの浮動小数点数の表現方法 ( IEEE 754標準による) によるものです。
要するに、一部の浮動小数点数はコンピューターで正確に表すことができません。より高い精度が必要な場合は、BigDecimal
クラスを試すことができます。