04 - Integers
Motoko's main number types are Int, Nat and Float.
Nat
Nats are "whole" positive numbers. By default positive whole nunbers are casted to type Nat.
1 // 1 : Nat
2 // 2: Nat
Large Nat numbers could be written with underscore as divider:
123_456_789 // 123_456_789 : Nat
Even when you write a large number without underscores, Motoko will add them during the print out.
123456789 // 123_456_789 : Nat
Hexadecimal numbers begin with 0x:
0xF // 15 : Nat
Ints
Integers represent whole numbers that could be either positive or negative.
+3 // 3 : Int
-3 // -3 : Int
Every positive number literal is treated as Nat. However, it doesn't cause a problem in arithmetic operations since Nat is subtype of Int.
Arithmetic operations
Motoko has several operators that work with Nat and Int values.
1 + 1 // => 2 : Nat
+2 - 5 // => -3 : Int
3 * 3 // => 9 : Nat
Integer division produces integer results:
5 / 2 // => 2 : Nat
% operator performs modular division:
5 % 2 // => 1 : Nat
Integers support comparison:
2 > 1  // => true
2 < 1  // => false
2 >= 1 // => true
2 <= 1 // => false