Ich möchte eine Zeichenfolge formatieren, die Float-Variablen enthält, einschließlich dieser mit einer festen Anzahl von Dezimalstellen, und ich möchte dies mit dieser Art von Formatierungssyntax tun:
amount = Math::PI
puts "Current amount: #{amount}"
und ich möchte erhalten Current amount: 3.14
.
Ich weiß, dass ich es schaffen kann
amount = Math::PI
puts "Current amount %.2f" % [amount]
aber ich frage, ob es möglich ist, es im #{}
Weg zu tun .
Antworten:
Verwendung
round
:"Current amount: #{amount.round(2)}"
quelle
amount.round(2).to_s.chomp('.0')
, was hässlich ist, aber ich denke, es funktioniert für meine Zwecke.5.684999905497534e-06
. Diea.round(5)
nachgeben1.0e-05
, während'%.5f' % a
Ausbeuten"0.00001"
Sie können verwenden
"#{'%.2f' % var}"
:irb(main):048:0> num = 3.1415 => 3.1415 irb(main):049:0> "Pi is: #{'%.2f' % num}" => "Pi is: 3.14"
quelle
"%.2f" % 1.345 => "1.34"
"%.2f" % 1.346 => "1.35"
"%.2f" % 1.345.round(2) => "1.35"
"%.2f" % 1.346.round(2) => "1.35"
Sie können dies tun, aber ich bevorzuge die
String#%
Version:puts "Current amount: #{format("%.2f", amount)}"
Wie @Bjoernsen hervorhob,
round
ist dies der einfachste Ansatz und funktioniert auch mit Standard-Ruby (1.9), nicht nur mit Rails:http://www.ruby-doc.org/core-1.9.3/Float.html#method-i-round
quelle
Ja es ist möglich:
puts "Current amount: #{sprintf('%.2f', amount)}"
quelle