Я всегда думал, что вы никогда не должны использовать поплавки для экономии денег в базе данных. Поэтому я использовал десятичную. Проблема в том, что я сохраняю десятичную 100 и она помещается в базу данных как 99.9999
У меня есть модель с именем GameCommission
Миграция:
create_table :game_commissions, :force => true do |t|
t.integer :game_id
t.integer :widget_id
t.integer :user_id
t.decimal :amount, :precision => 6, :scale => 4, :default => 0
t.date :end_date
t.timestamps
end
Теперь я быстро создаю новую игровую комиссию:
amount = BigDecimal.new("100")
gc = GameCommission.new(:game_id => 1, :widget_id => 1, :user_id => User.last.id, :amount => amount, :end_date => Date.today)
gc.save
gc.amount.to_s
# => "100
сумма теперь 100, что я и хочу. Но если я получу его снова, сумма изменится на 99,9999, и эта сумма также будет сохранена в базе данных ...
gc = GameCommission.last
gc.amount.to_s
# => "99.9999"
Кто-нибудь знает, что происходит?