将字符串转换为货币格式

时间:2012-01-04 20:59:07

标签: ruby mongodb mongoid haml

使用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

3 个答案:

答案 0 :(得分:6)

如果您使用的是Rails,可以使用number_to_currency帮助

答案 1 :(得分:4)

请参阅字符串格式化方法,Kernel::sprintf文档包含所有参数。

在这种情况下,您希望%span.value= "%%pound;%.2f" % event.beers.first.cost获得4.50而不是4.5。

答案 2 :(得分:2)

如果你在谈论美国货币,包括:

  • 逗号,小数点左侧每三位数字
  • 小数点右侧最多两位数
  • 如果零美分
  • ,则不显示小数点

试试这个

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”]

可以通过编辑连接字符串来调整它对某些欧洲格式有用,但我对欧洲惯例知之甚少。