# Number

Numbers in joelang are meant to be intuitive and to represent real-world use cases.

Numbers can have underscores (`_`

), a period (`.`

), and an exponent (`^e`

)

Here are some examples:

`123`

`-500`

`9_876`

`100001.0002`

`3^e2`

## Number ranges

Ranges can be easily created with 2 numbers, and are inclusive on both sides, always. If you want the last number be exclusive, subtract one.

```
1 .. 3;
1^e2 .. 3^e2
```

### Ranging downward

Ranges can go downward

```
5 .. -5
```

### Some exceptions

Some exceptions to ranges are decimals. The example would not work

```
1 .. 4 // valid ✅
1.0 .. 4.0 // invalid since these contain decimals ❌
```

## Underscores

You may use an underscore as a separator for readability and it has no effect on the value.

```
1_200 == 1200
```

## When using exponents

When using an exponential number with an equality check, be sure to wrap your number in parens:

```
(1^e2) == (3^e2) ✅
1^e2 == 3^e2 ❌
(1^e2) < (3^e2) ✅
1^e2 < 3^e2 ❌
// etc ...
```