如何使用#{variable}在Ruby中使用浮动来格式化string?

我想格式化一个string包含浮动variables,包括他们固定的小数,我想用这种格式化语法:

amount = Math::PI puts "Current amount: #{amount}" 

我想获得Current amount: 3.14

我知道我可以做到

 amount = Math::PI puts "Current amount %.2f" % [amount] 

但我问是否有可能以#{}方式进行。

使用round

 "Current amount: #{amount.round(2)}" 

你可以使用"#{'%.2f' % var}"

 irb(main):048:0> num = 3.1415 => 3.1415 irb(main):049:0> "Pi is: #{'%.2f' % num}" => "Pi is: 3.14" 

你可以这样做,但我更喜欢String#%版本:

  puts "Current amount: #{format("%.2f", amount)}" 

正如@Bjoernsen所指出的那样, round是最直接的方法,它也可以和标准的Ruby(1.9)一起工作,不仅Rails:

http://www.ruby-doc.org/core-1.9.3/Float.html#method-i-round

是的,这是可能的:

 puts "Current amount: #{sprintf('%.2f', amount)}"