4

私の出力はこのようなものです -

ruby-1.9.2-p290 :011 > 2.32 * 3
=> 6.959999999999999

そして、私はそれを持っていた別のマシンでいつか戻ったことを覚えています..2.32 * 3 = 6

私の間違いは何ですか?これを読んでくれてありがとう。:)

4

3 に答える 3

7

本当に整数に切り捨てたい場合は、

(3 * 2.32).to_i

しかし、それはありそうもないと思います。通常、わずかに不正確な浮動小数点数を次のようにフォーマットしたいだけです

"%0.2f" % (3 * 2.32) 
=> "6.96"

本当に正確な表現で作業したい場合は、BigDecimalを使用できます。

require 'BigDecimal'
(3 * BigDecimal.new("2.32")).to_s("F")
=> "6.96"

PS。http://floating-point-gui.de/ DSを読むことをお勧めします。

于 2011-10-20T21:13:19.123 に答える
3

あなたの問題は、Floats が正確ではないということです:

http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems

それは実際には言語固有ではありません。

于 2011-10-20T20:56:15.983 に答える