3.2. Monetary Values: The Decimal Data Type

It might seem that the double data type would also be a good choice for monetary values. The only problem is that even 15 digits of precision may not be enough to represent important monetary values. To overcome the problems associated with limited precision in financial calculations, C# created the decimal data type. The details of the decimal data type are presented in Table 3-4.

Table 3-4. Table 3-4
Type SpecifierBitsRangeData Suffix
Decimal128±1.0 × 10−28 to ±7.9 × 1028M, m

The greatest advantage of the decimal data type is that is has 28 digits of precision — almost twice the precision of a double. This means that, even in financial calculations involving very large amounts, you can keep track of the pennies. The disadvantage of the decimal data type is that each variable takes 16 bytes of memory to store its value.

You can modify the program you've been using to test the various data types by simply changing the int keywords in the code listing presented for the btnCalc_Click() method with the decimal keyword. Now run the program, using the same input values of 10 and 6 for the two operands. What happened? The output for the program is shown in Figure 3-4. (I did not change the input prompts for the two label objects or the text for the frmMain object, so the word "integer" is a little misleading in the figure. Change them if you wish.)

Figure 3-4. Figure 3-4

As you can see in Figure 3-4, the enhanced precision of the decimal ...

Get Beginning C# 3.0 now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.