decimal

System.Decimal
Exact Precision Floating Point (1 E -28 to 7.9 E 28)
29 significant digits.
The default value is 0.

decimal myDecimal; 
System.Decimal myDecimal;

Explicit Data Type

You can append literal constants with the letter "M" or "m" when you need to specify this type of literal.

decimal myDecimal = 1.6m;                         'suffix is necessary  
decimal myDecimal = 1.6M; 'suffix is necessary

Converting

// Decimal to Integer 
decimal myDecimal = 1.6M;
int myInteger = (int)myDecimal;

// Decimal to Double
decimal myDecimal = 1.6M;
double myDouble = (double)myDecimal;

// Decimal to Float
decimal myDecimal = 1.6M;
float myFloat = (float)myDecimal;

Examples


System.Diagnostics.Debug.Print myDecimal         // = 1.2345 

Format Specifier

int value; 
value = 12345;

Console.WriteLine(value.ToString("D")); // Displays 12345
Console.WriteLine(value.ToString("D8")); // Displays 00012345


decimal.Round()

Rounds a value to the nearest integer or to the specified number of fractional digits
This uses Bankers Rounding


VBA Currency Equivalent

The Currency data type in VBA has been replaced with the Decimal data type in C#.
In most cases these will be interchangeable however they do actually differ in their precision.
The Decimal data type in .NET is more accurate than the VBA Currency data type.


© 2026 Better Solutions Limited. All Rights Reserved. © 2026 Better Solutions Limited TopPrevNext