Конвертировать строку в формат валюты - PullRequest
2 голосов
/ 05 января 2012

Используя Руби и Хамла, у меня есть свойство, которое стоит.Я верю (я новичок в ruby), что это будет Float

. В данный момент строка ниже выводит мое десятичное число в формате, как 4,5 вместо 4,50, что я и хочу.

%span.value= "£#{event.beers.first.cost)}"

Это файл моего класса для пива.

class Beer
  include Mongoid::Document
  embeds_many :ratings

  field :name, type: String
  field :country, type: Country
  field :cost, type: Float
  field :photos, type: PhotoArray, default: PhotoArray.new
end

Ответы [ 3 ]

6 голосов
/ 05 января 2012

Если вы используете Rails, вы можете использовать number_to_currency helper

4 голосов
/ 05 января 2012

См. Метод форматирования строки, документация Kernel :: sprintf содержит все аргументы для него.

В этом случае вы захотите сделать %span.value= "%%pound;%.2f" % event.beers.first.cost, чтобы получить 4,50.а не 4.5.

2 голосов
/ 27 июня 2017

Если вы говорите об американской валюте, в том числе:

  • запятые каждые три цифры слева от десятичной точки
  • не более двух цифр справа от десятичной точки
  • не показывать десятичную точку, если есть ноль центов

попробуйте это

sprintf('%.2f',num).gsub('.00','').reverse.scan(/(\d*\.\d{1,3}|\d{1,3})/).join(',').reverse

, который генерирует следующее в отладчике:

vals = [123.01, 1234.006, 12, 1234567, 12345678.1,1.001]
vals.map{|num|    sprintf('%.2f',num).gsub('.00','').reverse.scan(/(\d*\.\d{1,3}|\d{1,3})/).join(',').reverse 
    }    

=> ["123.01", "1 234.01", "12", "1 234 567", "12 345 678,10", "1"]

Его можно настроить для некоторых европейских форматов, отредактировав строку соединения, но я не очень разбираюсь в европейских соглашениях.

...