# [Question] What is the Main Difference of Float, Double and Decimal Types in C#?

The main difference of Float, Double and Decimal is precision. Decimals have a high degree of accuracy.

Unlike decimals, floats/doubles types have special values. The float and double have constants for NaN, +∞, and −∞, as well as other values (MaxValue, MinValue, and Epsilon).

Another significant difference is that float/double internally represent numbers in base 2, but decimal base 10.

Of course they have different sizes as well:

• Float size is 32 bit (7 digits)
• Double size is 64 bit (15-16 digits)
• Decimal size is 128 bit (28-29 digits)

## Details

Decimal numbers have much higher precision and are usually used within financial applications that require a high degree of accuracy. Decimals are much slower (20X times in some tests) than a double/float numbers.

Double is useful for scientific computations (such as computing spatial coordinates). Decimal is useful for financial computations and values that are “human-made” rather than the result of real-world measurements.

Decimals and floats/doubles cannot be compared without a cast whereas Floats and Doubles can. Decimals also allow the encoding or trailing zeros.

## Examples

Code

```Console.WriteLine ( 1.0 / 0.0); // Infinity
Console.WriteLine (−1.0 / 0.0); // -Infinity
Console.WriteLine ( 1.0 / −0.0); // -Infinity
Console.WriteLine (−1.0 / −0.0); // Infinity
Console.WriteLine ( 0.0 / 0.0); // NaN
Console.WriteLine ((1.0 / 0.0) − (1.0 / 0.0)); // NaN
Console.WriteLine (0.0 / 0.0 == double.NaN); // False
Console.WriteLine (double.IsNaN (0.0 / 0.0)); // True
Console.WriteLine (object.Equals (0.0 / 0.0, double.NaN)); // True
```

Code
```float f = 1F / 9;
double d = 1D / 9;
decimal dc = 1M / 9;
Console.WriteLine("Float number example: {0}\nDouble number example: {1}\nDecimal number example: {2}", f, d, dc);
```

Result
```Float number example: 0.11111111
Double number example: 0.1111111111111111
Decimal number example: 0.1111111111111111111111111111
```

## Useful information

Decimal type exist only in c#

## Test Environment

• Windows 11
• Visual Studio 2022
• Visual Studio 2022
• C# 9
• .NET 5

Tags:,