私の出力はこのようなものです -
ruby-1.9.2-p290 :011 > 2.32 * 3
=> 6.959999999999999
そして、私はそれを持っていた別のマシンでいつか戻ったことを覚えています..2.32 * 3 = 6
私の間違いは何ですか?これを読んでくれてありがとう。:)
私の出力はこのようなものです -
ruby-1.9.2-p290 :011 > 2.32 * 3
=> 6.959999999999999
そして、私はそれを持っていた別のマシンでいつか戻ったことを覚えています..2.32 * 3 = 6
私の間違いは何ですか?これを読んでくれてありがとう。:)
本当に整数に切り捨てたい場合は、
(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を読むことをお勧めします。
あなたの問題は、Float
s が正確ではないということです:
http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
それは実際には言語固有ではありません。