One of the key aspects of working with numbers in Ruby is the distinction between integers (numbers with no digits after the decimal separator) and floating-point numbers (numbers with zero or more digits after the decimal separator).
They are implemented through the Integer and Float class.
a = 1
b = 1.0
a.class
#=> Integer
b.class
#=> Float
+, -, *, /). Numbers can be compared using the standard comparison operators.Integer, will always result in an instance of Integer.Float will result in other instances of Float.Integer and instances of Float will result in instances of Float.Float and Integer classes have methods that will coerce values from one to the other. Integer numbers are precise to a whole unit, while Float has precision that is fractional to an whole number. This means that coercing a float to an integer may result in loss of precision.4.9.to_i
#=> 4
5.to_f
#=> 5.0
7 - 3.0
#=> 4.0
2 == 4
#=> false
1.0 == 1
#=> true
An if statement can be used to conditionally execute code:
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
Sometimes you want to execute a statement (or statements) if a condition is not true, for situations like that, Ruby implements the unless keyword:
x = 4
unless x == 5
# Execute logic if x does not equal 5
else
# Execute logic if x == 5
end
If you want to execute different code depending on the value of a variable, Ruby's case statement might come useful:
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
The same problem can sometimes be solved using different types of conditional statements, sometimes one might be more suited for the problem than the other. It's a good idea to stop for a moment and also consider the other two options when using any of the three conditional statements.