Ruby Language
キャスト(型変換)
サーチ…
文字列へのキャスト
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
2つの整数を分けるので、結果は整数になります。この問題を解決するには、少なくとも1つを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