Я пытаюсь округлить суммы, которые я получаю, до 2 десятичных знаков. У меня есть атрибут количества в виде десятичного поля с точностью 32 и шкалой 16.
Я пробовал делать количество. Около (2)
def amount(amt)
amt.to_f.round(2)
end
Допустим, amt = 80500.00999999999
. При печати этого в журналах рельсов, я получаю 80500.01
. Но при сохранении сохраняет 80500.00999999999
в базе данных.
Также я заметил, что если я делаю 65535.00999
(или меньшие значения), его округление и сохранение правильно до 65535.01. С другой стороны, если я использую amount= 65536.00999
(или большее значение), он сохраняет сумму в базе данных без округления. Я взял эти цифры, в частности, поскольку 65535
является верхним пределом без знака smallInt
в Postgres, и каким-то образом получаю эти результаты.
EDIT:
У меня есть модель транзакции, которая имеет атрибут под названием сумма. У меня есть другой файл:
# app/operations/txn.rb
def create_txn
@transaction = Transaction.new(transaction_params)
@transaction.save
end
def transaction_params
{
.
.
.
amount: dest_amount,
.
.
.
}
end
def dest_amount
#logic
end