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
같은 문제를 서로 다른 종류의 조건문으로 해결할 수 있을 때도 있어요. 어떤 경우에는 한 가지가 다른 것보다 문제에 더 잘 맞을 수도 있어요. 세 가지 조건문 중 하나를 사용할 때는 잠시 멈춰서 나머지 두 가지 방법도 함께 고려해 보는 게 좋아요.