如何使用#{variable}在Ruby中使用浮点格式化字符串?

时间:2012-09-12 13:41:34

标签: ruby

我想格式化一个包含浮点变量的字符串,包括固定数量的小数,我希望用这种格式化语法来实现:

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

我想获得Current amount: 3.14

我知道我可以用

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

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

4 个答案:

答案 0 :(得分:63)

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

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

答案 1 :(得分:50)

使用round

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

答案 2 :(得分:32)

你可以这样做,但我更喜欢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

答案 3 :(得分:6)

是的,有可能:

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