0

次の操作でこの値が得られるのはなぜですか:

14.99 + 1.5 = 16.490000000000002

16.49になると思います。これらの余分な小数を避けるにはどうすればよいですか?

4

2 に答える 2

1

これが浮動小数点演算のしくみです。まだオブジェクトである丸められた数値が必要な場合は、次のFloatことができます

result.round(2) #=> 16.49

または、文字列だけが必要な場合:

"%0.2f" % result
于 2012-10-28T09:53:02.600 に答える
0

これは Ruby によるものではなく、コンピューターでの浮動小数点数の表現方法 ( IEEE 754標準による) によるものです。

要するに、一部の浮動小数点数はコンピューターで正確に表すことができません。より高い精度が必要な場合は、BigDecimalクラスを試すことができます。

于 2012-10-28T09:55:14.717 に答える