1

我有一个我创建的表,其中一列被创建为:

t.decimal price

我通过这样做创建了一个新记录:

Prices.create(:price => 74.85)

创建的记录显示如下:

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

为什么会发生这种情况?我想设置 74.85 而不是 74.849999 ...

谢谢

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 回答