2012-09-12 47 views
48

我想格式化包含浮點變量的字符串,包括它們與小數的固定的數額,我想用這種格式化語法來做到這一點:如何使用#{variable}在Ruby中使用浮動來格式化字符串?

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

,我想獲得Current amount: 3.14

我知道我可以

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

做,但我問是否可以做到這一點的#{}方式。

+0

有解決任何規劃問題無窮的方式,但有些人比其他人好很多。你爲什麼不想使用正確的工具來完成這項工作? –

回答

40

使用round

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

無需欄杆:http://www.ruby-doc.org/core-1.9.3/Float.html#method--round –

+0

嗯,好的。我嘗試了IRB中的代碼。它不起作用。但我的系統的Ruby版本是1.8.7。 – Bjoernsen

+18

不知道這一點 - 如果你的數字是11.3,你想11.30你沒有得到正確的格式... – xmjw

32

你可以這樣做,但我更喜歡String#%版本:

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

由於@Bjoernsen指出,round是最直接的方法,它也可以與標準紅寶石(1.9),不僅Rails:

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

+0

你爲什麼喜歡String版本? – Bjoernsen

+0

因爲我試圖爲簡單表達式預留插值。 –

5

是的,這是可能的:

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

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

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

這應該是被接受的答案。 – Fatih

+3

當心不同的舍入的: ''' 「%.2f」 %1.345 => 「1.34」''' ''' 「%.2f」 %1.346 => 「1.35」''' ''' 「%.2f」%1.345.round(2) =>「1.35」''' '''「%.2f」%1.346.round(2) =>「1.35」''' –

+0

會很棒查看文檔的鏈接 – yegor256

相關問題