Ruby Language
Кастинг (преобразование типов)
Поиск…
Кастинг в строку
123.5.to_s #=> "123.5"
String(123.5) #=> "123.5"
Обычно String()
просто вызывает #to_s
.
Методы Kernel#sprintf
и String#%
ведут себя аналогично C:
sprintf("%s", 123.5) #=> "123.5"
"%s" % 123.5 #=> "123.5"
"%d" % 123.5 #=> "123"
"%.2f" % 123.5 #=> "123.50"
Кастинг в целое число
"123.50".to_i #=> 123
Integer("123.50") #=> 123
Строка примет значение любого целого в начале, но не будет принимать целые числа из другого места:
"123-foo".to_i # => 123
"foo-123".to_i # => 0
Однако существует разница, когда строка не является допустимым целым:
"something".to_i #=> 0
Integer("something") # ArgumentError: invalid value for Integer(): "something"
Кастинг для плавания
"123.50".to_f #=> 123.5
Float("123.50") #=> 123.5
Однако существует разница, когда строка не является допустимым значением Float
:
"something".to_f #=> 0.0
Float("something") # ArgumentError: invalid value for Float(): "something"
Поплавки и целые числа
1/2 #=> 0
Поскольку мы делим два целых числа, результатом является целое число. Чтобы решить эту проблему, нам нужно отбросить хотя бы одну из них: Float:
1.0 / 2 #=> 0.5
1.to_f / 2 #=> 0.5
1 / Float(2) #=> 0.5
В качестве альтернативы, fdiv
может использоваться для возврата результата с плавающей запятой без явного литья любого операнда:
1.fdiv 2 # => 0.5
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow