2012-01-04 6 views
2

Использование Ruby и Haml, у меня есть свойство, которое стоит. Я верю, что это будет 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 

ответ

4

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

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

+0

спасибо, строка кода, которую я закончил, была «£ # {"%. 2f "% event.beers.first.cost}" – Steve

1

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

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

попробовать этот

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", "1234567", "12,345,678.10", " 1 "]

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

Смежные вопросы