Rubyで数値を扱ううえで押さえておきたいポイントの一つが、整数(小数点以下の桁がない数値)と浮動小数点数(小数点以下に0桁以上の桁がある数値)の区別です。
これらはIntegerクラスとFloatクラスで実装されています。
a = 1
b = 1.0
a.class
#=> Integer
b.class
#=> Float
+、-、*、/)を使って行います。
数値の比較には標準の比較演算子を使います。Integerのインスタンス同士の基本的な算術演算の結果は、必ずIntegerのインスタンスになります。Floatのインスタンス同士の基本的な算術演算の結果は、Floatのインスタンスになります。IntegerのインスタンスとFloatのインスタンスの間の基本的な算術演算の結果は、Floatのインスタンスになります。FloatクラスとIntegerクラスには、一方の値を他方に変換するメソッドがあります。
Integerは整数単位で正確ですが、Floatの精度は整数に対する小数の精度です。
つまり、浮動小数点数を整数に変換すると、精度が失われることがあります。4.9.to_i
#=> 4
5.to_f
#=> 5.0
7 - 3.0
#=> 4.0
2 == 4
#=> false
1.0 == 1
#=> true
if文を使うと、条件に応じてコードを実行できます。
x = 5
if x == 5
# Execute logic if x equals 5
elsif x > 7
# Execute logic if x greater than 7
else
# Execute logic in all other cases
end
条件が真で_ない_ときに文を実行したいこともあります。そんなときのために、Rubyにはunlessキーワードがあります。
x = 4
unless x == 5
# Execute logic if x does not equal 5
else
# Execute logic if x == 5
end
変数の値によって実行するコードを変えたいときは、Rubyのcase文が役に立つでしょう。
y = 5
case y
when 3
# Execute logic if y equals 3
when 5
# Execute logic if y equals 5
else
# Execute logic in all other cases
end
同じ問題でも、種類の異なる条件文を使って解けることがあります。問題によっては、一方のほうが他方よりも適していることもあるでしょう。 3つの条件文のどれかを使うときは、少し立ち止まって、残りの2つも検討してみるのがよいでしょう。