Ruby Language
주조 (유형 변환)
수색…
String에 캐스트
123.5.to_s #=> "123.5"
String(123.5) #=> "123.5"
일반적으로 String()
은 #to_s
호출 #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