我创建了一个表,其中一个列创建为:
t.decimal price
我通过这样做创建了一条新记录:
Prices.create(:price => 74.85)
创建的记录显示如下:
#<Price id: 10, price: #<BigDecimal:4925c58,'0.7484999999 999999E2',27(27)>>
为什么会这样?我想设置74.85而不是74.849999 ...
由于
答案 0 :(得分: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)>