Ruby Language
Casting (conversión de tipo)
Buscar..
Casting a una cadena
123.5.to_s #=> "123.5"
String(123.5) #=> "123.5"
Normalmente, String()
solo llamará #to_s
.
Los métodos Kernel#sprintf
y String#%
comportan de manera similar a C:
sprintf("%s", 123.5) #=> "123.5"
"%s" % 123.5 #=> "123.5"
"%d" % 123.5 #=> "123"
"%.2f" % 123.5 #=> "123.50"
Casting a un entero
"123.50".to_i #=> 123
Integer("123.50") #=> 123
Una cadena tomará el valor de cualquier entero al comienzo, pero no tomará enteros de ninguna otra parte:
"123-foo".to_i # => 123
"foo-123".to_i # => 0
Sin embargo, hay una diferencia cuando la cadena no es un entero válido:
"something".to_i #=> 0
Integer("something") # ArgumentError: invalid value for Integer(): "something"
Casting a un flotador
"123.50".to_f #=> 123.5
Float("123.50") #=> 123.5
Sin embargo, hay una diferencia cuando la cadena no es un Float
válido:
"something".to_f #=> 0.0
Float("something") # ArgumentError: invalid value for Float(): "something"
Flotadores y enteros
1/2 #=> 0
Como estamos dividiendo dos enteros, el resultado es un entero. Para resolver este problema, necesitamos lanzar al menos uno de esos a Float:
1.0 / 2 #=> 0.5
1.to_f / 2 #=> 0.5
1 / Float(2) #=> 0.5
Alternativamente, fdiv
puede usarse para devolver el resultado de división de punto flotante sin lanzar explícitamente ningún operando:
1.fdiv 2 # => 0.5
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow