Elixir

# Elixir Basics - 1. Basic Data Types

Updated:

## Integers

Elixir supports a variety of different Integers.

### Decimal

``````iex(1)> 14
14
``````
``````iex(19)> i(14)
Term
14
Data type
Integer
Reference modules
Integer
Implemented protocols
IEx.Info, Inspect, List.Chars, String.Chars
``````

Underscores can also be used with Decimal numbers when writing large numbers, making them easier to read.

For example, one million can be written like so

``````iex(5)> 1_000_000
1000000
``````

``````iex(2)> 0xcafe
51966
``````

### Octal

``````iex(3)> 0o765
501
``````

### Binary

``````iex(4)> 0b1010
10
``````

## Floats

A Float or Floating-point number is denoted by using a decimal point.

``````iex(6)> 5.0
5.0
``````
``````Term
5.0
Data type
Float
Reference modules
Float
Implemented protocols
IEx.Info, Inspect, List.Chars, String.Chars
``````

Floats also support exponents by using the letter `e` after the last number.

``````iex(16)> 3.14e-2
0.0314
``````

## Booleans

Elixir supports both `true` and `false` as booleans

``````iex(17)> true
true
iex(18)> false
false
iex(19)>
``````
``````Term
true
Data type
Atom
Reference modules
Atom
Implemented protocols
IEx.Info, Inspect, List.Chars, String.Chars
``````

If you are paying attention, you will notice that when you inspect `i(true)` Elixir says that its data type is of type `Atom`. This is because booleans in Elixir are also `atoms`

``````iex(25)> is_atom(true)
true
iex(26)> is_atom(false)
true
``````

## Atoms

An Atom is a constant whose name is its value.

``````iex(27)> :foo
:foo
``````
``````iex(37)> i(:foo)
Term
:foo
Data type
Atom
Reference modules
Atom
Implemented protocols
IEx.Info, Inspect, List.Chars, String.Chars
``````
``````iex(33)> is_boolean(:true)
true
iex(34)> is_boolean(:false)
true
``````
``````iex(35)> :true === true
true
iex(36)> :false === false
true
``````

## Strings

Strings are denoted with double quotes.

``````iex(38)> "Hello, World"
"Hello, World"
``````
``````iex(39)> i("Hello, World")
Term
"Hello, World"
Data type
BitString
Byte size
12
Description
This is a string: a UTF-8 encoded binary. It's printed surrounded by
"double quotes" because all UTF-8 encoded code points in it are printable.
Raw representation
<<72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100>>
Reference modules
String, :binary
Implemented protocols
Collectable, IEx.Info, Inspect, List.Chars, String.Chars
``````

Elixir also supports string interpolation, like so:

``````iex(41)> string = "World"
"World"
iex(42)> "Hello, #{string}"
"Hello, World"
``````

Strings can be printed using `IO.puts()` from the `IO` module.

``````iex(43)> IO.puts("Hello, World")
Hello, World
:ok
``````

Previous
11. Functions