2012-09-12 12 views
48

me gustaría dar formato a una cadena que contiene las variables float incluirlos con una cantidad fija de decimales, y me gustaría hacerlo con este tipo de formato a la sintaxis:¿Cómo formatear una cadena con flotadores en Ruby usando # {variable}?

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

y me gustaría obtener Current amount: 3.14.

sé que puedo hacerlo con

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

pero me pregunto si es posible hacerlo en la forma #{}.

+0

hay infinitas maneras de resolver cualquier problema de programación, pero algunos son mucho mejores que otros. ¿Por qué no quieres usar la herramienta adecuada para este trabajo? –

Respuesta

40

Uso round:

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

No se necesitan raíles: http://www.ruby-doc.org/core-1.9.3/Float.html#method-i-round –

+0

Ah, está bien. Probé el código en mi IRB. No funcionó. Pero la versión de Ruby de mi sistema es 1.8.7. – Bjoernsen

+18

No estoy seguro de esto: si su número es 11.3 y quiere 11.30, no obtiene el formato correcto ... – xmjw

32

Usted puede hacer esto, pero yo prefiero la versión String#%:

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

Como @Bjoernsen señaló, round es el método más sencillo y también funciona con estándar Ruby (1.9), no solo Rails:

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

+0

¿Por qué prefiere la versión String? – Bjoernsen

+0

Porque trato de reservar la interpolación para expresiones simples. –

5

sí, es posible:

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

Puede utilizar "#{'%.2f' % var}":

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

esta debería ser la respuesta aceptada. – Fatih

+3

Cuidado de diferente redondeo: '' ' "% .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

Sería genial para ver un enlace a la documentación – yegor256

Cuestiones relacionadas