我有一个我创建的表,其中一列被创建为:
t.decimal price
我通过这样做创建了一个新记录:
Prices.create(:price => 74.85)
创建的记录显示如下:
#<Price id: 10, price: #<BigDecimal:4925c58,'0.7484999999 999999E2',27(27)>>
为什么会发生这种情况?我想设置 74.85 而不是 74.849999 ...
谢谢
我有一个我创建的表,其中一列被创建为:
t.decimal price
我通过这样做创建了一个新记录:
Prices.create(:price => 74.85)
创建的记录显示如下:
#<Price id: 10, price: #<BigDecimal:4925c58,'0.7484999999 999999E2',27(27)>>
为什么会发生这种情况?我想设置 74.85 而不是 74.849999 ...
谢谢
这是一个浮点错误。您可以改用字符串:
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)>