# C# basic data types

6 Reputation points
2020-03-10T08:25:36.03+00:00

Hey,I am a beginner in C# and I wanted to know what the difference was between type decimal and double.

Not Monitored
{count} vote

1. 16 Reputation points
2020-03-22T22:55:05.117+00:00

Basically, precision.

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

Float and double work with rounding values. For that reason, they are recommended when you don't care if there is a rounding here or there. They are widely used for scientific calculations.

Decimal is different: we use it when we want exact precision of values. We usually want this when we are working with money, right?
Because of the high accuracy, working with decimals is slower.

In terms of magnitude, we were able to store larger numbers in a double, but with less precision.
In a decimal we keep smaller, but with more precision

2. 10,566 Reputation points
2020-03-11T02:53:54.96+00:00

Hi Andrew,

Please refer the following blog about the difference between decimal and double:

3. 1 Reputation point
2020-06-30T19:38:31.017+00:00

As far as I know decimals are better for financial calculation because you will not lose the decimal precision, the reason for this is because decimals are not saved directly as binary value which means that the cpu will preforme more aritmetic operations when you make calculations with them, althought this doesn't have any impact in simple or common applications It could have a big performance impact when working with a lot of data calculations.

4. 1 Reputation point
2020-10-26T20:02:37.61+00:00
``````+---------+----------------+---------+----------+---------------------------------------------+
| C#      | .Net Framework | Signed? | Bytes    | Possible Values                             |
| Type    | (System) type  |         | Occupied |                                             |
+---------+----------------+---------+----------+---------------------------------------------+
| sbyte   | System.Sbyte   | Yes     | 1        | -128 to 127                                 |
| short   | System.Int16   | Yes     | 2        | -32768 to 32767                             |
| int     | System.Int32   | Yes     | 4        | -2147483648 to 2147483647                   |
| long    | System.Int64   | Yes     | 8        | -9223372036854775808 to 9223372036854775807 |
| byte    | System.Byte    | No      | 1        | 0 to 255                                    |
| ushort  | System.Uint16  | No      | 2        | 0 to 65535                                  |
| uint    | System.UInt32  | No      | 4        | 0 to 4294967295                             |
| ulong   | System.Uint64  | No      | 8        | 0 to 18446744073709551615                   |
| float   | System.Single  | Yes     | 4        | Approximately ±1.5 x 10-45 to ±3.4 x 1038   |
|         |                |         |          |  with 7 significant figures                 |
| double  | System.Double  | Yes     | 8        | Approximately ±5.0 x 10-324 to ±1.7 x 10308 |
|         |                |         |          |  with 15 or 16 significant figures          |
| decimal | System.Decimal | Yes     | 12       | Approximately ±1.0 x 10-28 to ±7.9 x 1028   |
|         |                |         |          |  with 28 or 29 significant figures          |
| char    | System.Char    | N/A     | 2        | Any Unicode character (16 bit)              |
| bool    | System.Boolean | N/A     | 1 / 2    | true or false                               |
+---------+----------------+---------+----------+---------------------------------------------+
``````

Use decimal for counted values

Use float/double for measured values

Some examples:

1. money (do we count money or measure money?)
2. distance (do we count distance or measure distance? *)
3. scores (do we count scores or measure scores?)

We always count money and should never measure it. We usually measure distance. We often count scores.

5. 356 Reputation points
2021-01-07T20:01:01.757+00:00

Hi

Best Regards.