Каков лучший метод обработки валюты/денег?

Вы также можете сделать:

echo "hello
world"

Это работает как внутри скрипта, так и из командной строки.
В командной строке нажмите Shift + Enter , чтобы сделать разрывы строк внутри строки.

Это работает для меня на моем MacOS и Ubuntu 18.04

315
задан the Tin Man 1 February 2016 в 07:19
поделиться

2 ответа

Возможно, вы захотите использовать в своей базе данных тип DECIMAL . При миграции сделайте что-то вроде этого:

# precision is the total number of digits
# scale is the number of digits to the right of the decimal point
add_column :items, :price, :decimal, :precision => 8, :scale => 2

В Rails тип : decimal возвращается как BigDecimal , что отлично подходит для расчета цен.

Если вы настаиваете на своем используя целые числа, вам придется вручную преобразовывать в BigDecimal и обратно, что, вероятно, станет проблемой.

Как указано mcl, для вывода цены используйте:

number_to_currency(price, :unit => "€")
#=> €1,234.01
484
ответ дан 23 November 2019 в 01:06
поделиться

Обычной практикой обработки валюты является использование десятичного типа. Вот простой пример из «Agile Web Development with Rails»

add_column :products, :price, :decimal, :precision => 8, :scale => 2 

. Это позволит вам обрабатывать цены от -999 999,99 до 999 999,99
Вы также можете включить проверку в свои элементы, например

def validate 
  errors.add(:price, "should be at least 0.01") if price.nil? || price < 0.01 
end 

, чтобы проверить свои значения.

25
ответ дан 23 November 2019 в 01:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: