1

作成したテーブルがあり、列の 1 つが次のように作成されました。

t.decimal price

これを行うことで新しいレコードを作成しました:

Prices.create(:price => 74.85)

作成されたレコードは次のように表示されます。

#<Price id: 10, price: #<BigDecimal:4925c58,'0.7484999999 999999E2',27(27)>>

なぜこれが起こるのでしょうか?74.849999 ではなく 74.85 に設定したいのですが...

ありがとう

4

1 に答える 1

1

これは浮動小数点エラーです。代わりに文字列を使用できます。

Prices.create(:price => "74.85")

これは Rails のバグではなく、浮動小数点値とBigDecimal動作の仕方であることに注意してください。

BigDecimal.new(74.85, 0)    #=> #<BigDecimal:7fc37cb7c068,'0.7484999999 9999994315 6581139191 98513031E2',45(54)>
BigDecimal.new("74.85")     #=> #<BigDecimal:7fc37ce69d48,'0.7485E2',18(18)>
于 2013-07-24T07:51:23.787 に答える