Ruby Language
Casting (conversion de type)
Recherche…
Casting à une chaîne
123.5.to_s #=> "123.5"
String(123.5) #=> "123.5"
En règle générale, String()
appelle simplement #to_s
.
Les méthodes Kernel#sprintf
et String#%
se comportent comme C:
sprintf("%s", 123.5) #=> "123.5"
"%s" % 123.5 #=> "123.5"
"%d" % 123.5 #=> "123"
"%.2f" % 123.5 #=> "123.50"
Casting à un entier
"123.50".to_i #=> 123
Integer("123.50") #=> 123
Une chaîne prend la valeur de tout entier à son début, mais ne prend pas les entiers ailleurs:
"123-foo".to_i # => 123
"foo-123".to_i # => 0
Cependant, il y a une différence lorsque la chaîne n'est pas un nombre entier valide:
"something".to_i #=> 0
Integer("something") # ArgumentError: invalid value for Integer(): "something"
Casting à un flotteur
"123.50".to_f #=> 123.5
Float("123.50") #=> 123.5
Cependant, il y a une différence lorsque la chaîne n'est pas un Float
valide:
"something".to_f #=> 0.0
Float("something") # ArgumentError: invalid value for Float(): "something"
Flotteurs et Entiers
1/2 #=> 0
Puisque nous divisons deux entiers, le résultat est un entier. Pour résoudre ce problème, nous devons lancer au moins l'un de ceux-ci sur Float:
1.0 / 2 #=> 0.5
1.to_f / 2 #=> 0.5
1 / Float(2) #=> 0.5
Alternativement, fdiv
peut être utilisé pour retourner le résultat en virgule flottante de la division sans lancer explicitement l’autre opérande:
1.fdiv 2 # => 0.5
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow