Ruby Language
Casting (Typumwandlung)
Suche…
Casting zu einer Schnur
123.5.to_s #=> "123.5"
String(123.5) #=> "123.5"
Normalerweise ruft String()
einfach #to_s
.
Die Methoden Kernel#sprintf
und String#%
verhalten sich ähnlich wie C:
sprintf("%s", 123.5) #=> "123.5"
"%s" % 123.5 #=> "123.5"
"%d" % 123.5 #=> "123"
"%.2f" % 123.5 #=> "123.50"
Casting auf eine Ganzzahl
"123.50".to_i #=> 123
Integer("123.50") #=> 123
Eine Zeichenfolge nimmt am Anfang den Wert einer ganzen Zahl an, nimmt jedoch keine anderen Zahlen an anderer Stelle:
"123-foo".to_i # => 123
"foo-123".to_i # => 0
Es gibt jedoch einen Unterschied, wenn die Zeichenfolge keine gültige Ganzzahl ist:
"something".to_i #=> 0
Integer("something") # ArgumentError: invalid value for Integer(): "something"
Casting zu einem Float
"123.50".to_f #=> 123.5
Float("123.50") #=> 123.5
Es gibt jedoch einen Unterschied, wenn die Zeichenfolge kein gültiger Float
:
"something".to_f #=> 0.0
Float("something") # ArgumentError: invalid value for Float(): "something"
Schwimmer und ganze Zahlen
1/2 #=> 0
Da wir zwei ganze Zahlen teilen, ist das Ergebnis eine ganze Zahl. Um dieses Problem zu lösen, müssen wir mindestens eine davon in Float ablegen:
1.0 / 2 #=> 0.5
1.to_f / 2 #=> 0.5
1 / Float(2) #=> 0.5
Alternativ kann fdiv
verwendet werden, um das Fließkommaergebnis der Division zurückzugeben, ohne einen der Operanden explizit auszugeben:
1.fdiv 2 # => 0.5
Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow