Elixir: Integers, Floats, Operators and Arithmetic
Integers and Floats are types of number that are used in Elixir. Integers are whole numbers, whereas Floats are floating point numbers, they have a decimal point value. For instance, 5 is an Integer, 5.0 is a Float. In order to check, Elixir provides is_integer() and is_float() methods. They are used like so:
is_integer(20)
#=> true
is_float(5)
#=> false
is_integer("int")
#=> false
is_float(6.789)
#=> trueInteger and Float Methods
Some more Integer and Float methods, and how they behave:
require Integer
Integer.is_odd(3)
#=> true
Integer.is_even(3)
#=> false
Integer.digits(12345)
#=> [1, 2, 3, 4, 5]
Integer.undigits([6, 7, 8, 9, 0])
#=> 67890
Integer.to_char_list(1357)
#=> '1357'
Float.to_char_list(3.57)
#=> '3.57'
Integer.to_string(1337)
#=>"1337"
Float.to_string(808.3773)
#=>"808.3773"
Float.ceil(13.2)
#=> 14
Float.floor(3.7)
#=> 3
Float.round(7.5)
#=> 8
Float.round(7.4)
#=> 7Parsing
The parse method ( .parse() ) runs the argument against the preceding module and returns the argument as an instance of that module (if it can find one, otherwise it presents an :error), followed by the ‘leftovers’. For instance if an Integer is parsed with an argument of "45Z", the 45 is converted into an integer and the "Z" is returned, remaining a string.
The return would look like {45, "Z"}, a tuple. Here are some more examples of how Integers and Floats act when parsed:
Integer.parse("1")
#=> {1, ""}
Integer.parse("76W")
#=> {76, "W"}
Integer.parse("2349")
#=> {2349, ""}
Float.parse("3.4E")
#=> {3.4, "E"}
Float.parse("DAISY")
#=> :error
Integer.parse("3.5")
#=> {3, ".5"}== and ===
== is used for equivalence, as we have seen before. 5 and 5.0 are the same amount, and so 5 == 5.0 == true. However 5 and 5.0 are not the same thing, as one is an integer and one is a float, and so there is ===, the case operator. With the case operator 5 === 5.0 == false.
Basic Arithmetic
Elixir provides operators for basic arithmetic. It is easy as 1 + 2 == 3. Here are the basic operators for this:
| arithmetic operator | means: |
| + | adds |
| - | subtracts |
| * | multiplies |
| / | divides, always returns a float |
| div | divides, returns a whole number without any remainder |
| rem | remainder, this returns a value that is the remainder when one number is divided by another |
When using div and rem the syntax is different to using the other operators. Creating an expression with these operators looks like so:
div 10, 3
#=> 3
rem 10, 3
#=> 1| Comparison Operator | Means: |
| == | Is equal to |
| != | Is not equal to |
| > | Greater than |
| < | Less than |
| >= | Greater than or equal to |
| <= | Less than or equal to |
Here we can see that the ! acts as a negating character, and basically says ‘is not’ to the operator that it sits with. For instance !> would be the same as putting <. The comparison operators can also be used to compare data types. For instance:
1 < :atom
#=> true
"string" == :atom
#=> false
Integer < String
#=> true