2012-03-31 17 views
48

Necesito trabajar con decimales. En mi programa, el usuario necesita poner un número con decimales para convertir ese número.Convertir cadena a número decimal en ruby ​​

El problema es: si trato de convertir el argumento en un número, obtengo un entero sin decimales.

# ARGV[0] is: 44.33 

size = ARGV[0] 

puts size.to_i 
# size is: 44 
# :(

Respuesta

78

Llama al to_i, se obtiene un número entero.

Intenta llamar a to_f, deberías obtener un flotador.

Para obtener más métodos de conversión de cadenas, look here.

-2

También puede utilizar sprintf a tener el número exacto de puntos decimales:

a = 2.45 
p sprintf "%.6f", a #=> "2.450000" 
+3

Pidió convertir una cadena a un decimal, y no al revés. –

3

También puede utilizar la clase decimal para que

a = '2.45' 
Decimal(a) # => 2.45 

ACTUALIZACIÓN:

Uso BigDecimal como @ bigtex777 mencionado:

fuente: http://ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html

+1

NoMethodError (método indefinido 'Decimal 'para ... Otra" característica/mejora "del equipo de destrucción en serie" anteriormente código de trabajo ", sin duda. – JosephK

+2

Esto no parece funcionar para ninguno. Puede' requerir' bigdecimal '; BigDecimal.new (' 3.333 ') ' – bigtex777

+0

Sí, parece que Decimal() es un método de una versión de ruby ​​específica que no pude recordar. BigDecimal pertenece a ruby ​​stdlib. -> http: // ruby-doc .org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html Es mejor usarlo. – lucianosousa

Cuestiones relacionadas