Ruby Language
Casting (konwersja typu)
Szukaj…
Rzutowanie na ciąg
123.5.to_s #=> "123.5"
String(123.5) #=> "123.5"
Zwykle String()
wywołuje po prostu #to_s
.
Metody Kernel#sprintf
i String#%
zachowują się podobnie do C:
sprintf("%s", 123.5) #=> "123.5"
"%s" % 123.5 #=> "123.5"
"%d" % 123.5 #=> "123"
"%.2f" % 123.5 #=> "123.50"
Przesyłanie do liczby całkowitej
"123.50".to_i #=> 123
Integer("123.50") #=> 123
Łańcuch przyjmuje na początku wartość dowolnej liczby całkowitej, ale nie przyjmuje liczb całkowitych z żadnego innego miejsca:
"123-foo".to_i # => 123
"foo-123".to_i # => 0
Istnieje jednak różnica, gdy ciąg nie jest prawidłową liczbą całkowitą:
"something".to_i #=> 0
Integer("something") # ArgumentError: invalid value for Integer(): "something"
Przesyłanie do pływaka
"123.50".to_f #=> 123.5
Float("123.50") #=> 123.5
Istnieje jednak różnica, gdy ciąg nie jest prawidłowym Float
:
"something".to_f #=> 0.0
Float("something") # ArgumentError: invalid value for Float(): "something"
Liczba zmiennoprzecinkowa i liczby całkowite
1/2 #=> 0
Ponieważ dzielimy dwie liczby całkowite, wynikiem jest liczba całkowita. Aby rozwiązać ten problem, musimy rzucić przynajmniej jedną z nich na Float:
1.0 / 2 #=> 0.5
1.to_f / 2 #=> 0.5
1 / Float(2) #=> 0.5
Alternatywnie, fdiv
może być użyty do zwrócenia wyniku zmiennoprzecinkowego dzielenia bez jawnego rzutowania któregoś z operandów:
1.fdiv 2 # => 0.5
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow