У меня есть база данных SQL, в которой хранятся цены, переданные из чисел с плавающей точкой в классе Ruby, которые мне затем необходимо отобразить в файле HTML / erb. Моя проблема в том, что цена, которая равна 10,00 или 10,20, возвращается как 10,0 или 10,2, тогда она неправильно отображается в HTML. Мне нужно, чтобы цены оставались в Ruby как плавающие, поскольку они используются для расчетов ... Есть ли очевидный способ вернуть эти цены с точностью до двух знаков после запятой?
Я пытался сохранить их по-другому в моей базе данных SQL, и я думаю, что я мог бы попытаться преобразовать число с плавающей точкой в строку и разбить его на десятичную точку, затем зациклить второй элемент в этом массиве и добавить еще один ноль, если одна цифра, затем собрать массив обратно в строку - но я изо всех сил пытаюсь заставить это работать ...
Мой класс Ruby настроен так:
class Transaction
attr_accessor :amount, :merchant_id, :tag_id, :transaction_date
attr_reader :id
def initialize(options)
@id = options['id'].to_i if options['id']
@amount = options['amount'].to_f
@merchant_id = options['merchant_id'].to_i if options['merchant_id']
@tag_id = options['tag_id'].to_i if options['tag_id']
@transaction_date = options['transaction_date'] if options['transaction_date']
end
Таблица SQL также:
CREATE TABLE transactions(
id SERIAL8 PRIMARY KEY,
amount DECIMAL(10,2),
transaction_date DATE,
merchant_id INT8 REFERENCES merchants(id) ON DELETE CASCADE,
tag_id INT8 REFERENCES tags(id) ON DELETE CASCADE
);
Когда я запускаю свой отладчик на массиве значений, я возвращаю все, что отображается как число с плавающей запятой в соответствии с тем, как я определил его в своем классе ...