# # Numbers

We can create integers like so:

``````var number = 43;
``````

But what about floating-point numbers or decimals?

Well, we can just add a specific letter after the number:

``````var floatNumber = 12F;  // float
var doubleNumber = 23D; // double
var decimalNumber = 5M; // decimal
var longNumber = 12L;   // long
``````

So, we need:

• `F` for float
• `D` for double
• `M` for decimal
• `L` for long

Also, we can create `double` numbers like so:

``````var doubleNumber = 12.34;
``````

For integers, we can can unsigned numbers when we don't care about negative numbers and we want only positive ones:

``````var unsignedNumber = 12U;
Console.WriteLine(unsignedNumber);
``````

So, it means that the max value for unsigned should be double the max one for all ints, doesn't it? 😏

``````var maxInt = int.MaxValue;
var maxIntUnsigned = UInt32.MaxValue;

Console.WriteLine(maxIntUnsigned > maxInt * 2); // True
``````

## # isNaN

To check if a value if not a number, you need to use `double.isNaN`:

``````var number = double.NaN;
var result = double.IsNaN(number);
Console.WriteLine(result); // True
``````

Also, whenever you try to divide a number by `0`, then the `DivideByZeroException` is thrown.

## # Overflowing

We can get the maximum value of an integer like this:

``````var maxValue = int.MaxValue;
Console.WriteLine(maxValue); // 2147483647
``````

If we increment this value, then the `maxValue` get the minumum value: 😱

``````maxValue++;
Console.WriteLine(maxValue); // -2147483648
``````

And this can be a real problem because this behavior passes as normal. This is called integral overflow.

If you want to throw exceptions when this happens, you can use checked:

``````checked
{
maxValue++;
Console.WriteLine(maxValue);
}
``````

This time, it throws the `OverflowException` exception because the incrementing operation caused an overflow.

We can also check only an statement:

``````checked(maxValue++);
``````

WARNING

The `checked` operator cannot be applied for `double`, `float` and `decimal`.

So make sure that you are aware of this issue and when this might happen, you should use `checked`.