Ruby Language
Casting (conversione del tipo)
Ricerca…
Casting to a String
123.5.to_s #=> "123.5"
String(123.5) #=> "123.5"
Solitamente, String()
chiamerà semplicemente #to_s
.
Metodi Kernel#sprintf
e String#%
comportano in modo simile a C:
sprintf("%s", 123.5) #=> "123.5"
"%s" % 123.5 #=> "123.5"
"%d" % 123.5 #=> "123"
"%.2f" % 123.5 #=> "123.50"
Trasmissione a un numero intero
"123.50".to_i #=> 123
Integer("123.50") #=> 123
Una stringa assumerà il valore di qualsiasi numero intero all'inizio, ma non prenderà numeri interi da nessun'altra parte:
"123-foo".to_i # => 123
"foo-123".to_i # => 0
Tuttavia, c'è una differenza quando la stringa non è un intero valido:
"something".to_i #=> 0
Integer("something") # ArgumentError: invalid value for Integer(): "something"
Casting to a Float
"123.50".to_f #=> 123.5
Float("123.50") #=> 123.5
Tuttavia, c'è una differenza quando la stringa non è un Float
valido:
"something".to_f #=> 0.0
Float("something") # ArgumentError: invalid value for Float(): "something"
Galleggianti e Interi
1/2 #=> 0
Poiché dividiamo due interi, il risultato è un numero intero. Per risolvere questo problema, abbiamo bisogno di trasmettere almeno uno di quelli a Float:
1.0 / 2 #=> 0.5
1.to_f / 2 #=> 0.5
1 / Float(2) #=> 0.5
In alternativa, fdiv
può essere utilizzato per restituire il risultato in virgola mobile della divisione senza eseguire espressamente il cast dell'operando:
1.fdiv 2 # => 0.5
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow