1

Rails 3.2.3 および ruby​​ 1.9.3p362 で BigDecimal を使用する際に問題が発生してい
ます。次の一連の数値比較は不合理な結果を出力します。

1.9.3-p362 :060 >   b = BigDecimal.new('620.56')
=> #<BigDecimal:68665e0,'0.62056E3',18(18)>

1.9.3-p362 :061 > b <= 620.56
=> false
1.9.3-p362 :062 > b > 620.56
=> true

1.9.3-p362 :063 > (b - 620.56) > 0
=> false
1.9.3-p362 :064 > (b - 620.56) == 0
=> true

つまり、これは次のことを示しています。

B > A 

B - A == 0 

私は何が欠けていますか?

4

1 に答える 1

1

浮動小数点演算のすばらしい世界へようこそ。

この Web サイトでは、その方法と理由を紹介しています (最初に基本的な回答を確認してください)。

浮動小数点数に関しては、コンピューターはあまり正確ではありません。丸め誤差はいたるところにあるため、何をするかに注意する必要があります。

于 2013-11-06T20:52:54.347 に答える