# Decimal Struct in C#

In C#, Decimal Struct class is used to represent a decimal floating-point number. The range of decimal numbers is +79,228,162,514,264,337,593,543,950,335 to -79,228,162,514,264,337,593,543,950,335. Due to its wide range, it is generally used for financial calculations which required large numbers of significant integral and fractional digits and no round-off errors. You can also perform the mathematical operations on Decimal type like addition, subtraction, division, multiplication, etc.

#### Constructors

Constructor Description
Decimal(Double) Initializes a new instance of Decimal to the value of the specified double-precision floating-point number.
Decimal(Int32) Initializes a new instance of Decimal to the value of the specified 32-bit signed integer.
Decimal(Int32[]) Initializes a new instance of Decimal to a decimal value represented in binary and contained in a specified array.
Decimal(Int64) Initializes a new instance of Decimal to the value of the specified 64-bit signed integer.
Decimal(Single) Initializes a new instance of Decimal to the value of the specified single-precision floating-point number.
Decimal(UInt32) Initializes a new instance of Decimal to the value of the specified 32-bit unsigned integer.
Decimal(UInt64) Initializes a new instance of Decimal to the value of the specified 64-bit unsigned integer.
Decimal(Int32, Int32, Int32, Boolean, Byte) Initializes a new instance of Decimal from parameters specifying the instance’s constituent parts.

#### Fields

Field Description
MaxValue Represents the largest possible value of Decimal. This field is constant and read-only.
MinusOne Represents the number negative one (-1).
MinValue Represents the smallest possible value of Decimal. This field is constant and read-only.
One Represents the number one (1).
Zero Represents the number zero (0).

Example:

 `// C# program to illustrate the ` `// use of MaxValue and MinValue field ` `using` `System; ` ` `  `public` `class` `GFG { ` ` `  `    ``// Main method ` `    ``static` `public` `void` `Main() ` `    ``{ ` ` `  `        ``// Display the Minimum and Maximum values ` `        ``Console.WriteLine(``"Display Maximum value "``+  ` `              ``"of Decimal: {0}"``, Decimal.MaxValue); ` ` `  `        ``Console.WriteLine(``"Display Minimum value of "``+ ` `                    ``"Decimal: {0}"``, Decimal.MinValue); ` `    ``} ` `} `

Output:

```Display Maximum value of Decimal: 79228162514264337593543950335
Display Minimum value of Decimal: -79228162514264337593543950335
```

#### Methods

Method Description
Ceiling(Decimal) Returns the smallest integral value that is greater than or equal to the specified decimal number.
Compare(Decimal, Decimal) Compares two specified Decimal values.
CompareTo() Compares this instance to a specified object or Decimal and returns an indication of their relative values.
Divide(Decimal, Decimal) Divides two specified Decimal values.
Equals() Returns a value indicating whether two instances of Decimal represent the same value.
Floor(Decimal) Rounds a specified Decimal number to the closest integer toward negative infinity.
FromOACurrency(Int64) Converts the specified 64-bit signed integer, which contains an OLE Automation Currency value, to the equivalent Decimal value.

GetBits(Decimal) Converts the value of a specified instance of Decimal to its equivalent binary representation.
GetHashCode() Returns the hash code for this instance.
GetTypeCode() Returns the TypeCode for value type Decimal.
Multiply(Decimal, Decimal) Multiplies two specified Decimal values.
Negate(Decimal) Returns the result of multiplying the specified Decimal value by negative one.
Parse() Converts the string representation of a number to its Decimal equivalent.
Remainder(Decimal, Decimal) Computes the remainder after dividing two Decimal values.
Round() Rounds a value to the nearest integer or specified number of decimal places.
Subtract(Decimal, Decimal) Subtracts one specified Decimal value from another.
ToByte(Decimal) Converts the value of the specified Decimal to the equivalent 8-bit unsigned integer.
ToDouble(Decimal) Converts the value of the specified Decimal to the equivalent double-precision floating-point number.
ToInt16(Decimal) Converts the value of the specified Decimal to the equivalent 16-bit signed integer.
ToInt32(Decimal) Converts the value of the specified Decimal to the equivalent 32-bit signed integer.
ToInt64(Decimal) Converts the value of the specified Decimal to the equivalent 64-bit signed integer.
ToOACurrency(Decimal) Converts the specified Decimal value to the equivalent OLE Automation Currency value, which is contained in a 64-bit signed integer.
ToSByte(Decimal) Converts the value of the specified Decimal to the equivalent 8-bit signed integer.
ToSingle(Decimal) Converts the value of the specified Decimal to the equivalent single-precision floating-point number.
ToString() Converts the numeric value of this instance to its equivalent String representation.
ToUInt16(Decimal) Converts the value of the specified Decimal to the equivalent 16-bit unsigned integer.
ToUInt32(Decimal) Converts the value of the specified Decimal to the equivalent 32-bit unsigned integer.
ToUInt64(Decimal) Converts the value of the specified Decimal to the equivalent 64-bit unsigned integer.
Truncate(Decimal) Returns the integral digits of the specified Decimal; any fractional digits are discarded.
TryParse() Converts the string representation of a number to its Decimal equivalent. A return value indicates whether the conversion succeeded or failed.

Example:

 `// C# program to illustrate the ` `// use of Add(Decimal, Decimal) ` `// method ` `using` `System; ` ` `  `class` `GFG { ` ` `  `    ``// Main method ` `    ``static` `public` `void` `Main() ` `    ``{ ` ` `  `        ``// Addition of two Decimal values ` `        ``// Using Add() method ` `        ``Decimal val1 = 349; ` `        ``Decimal val2 = 590; ` `        ``Decimal result; ` `        ``result = Decimal.Add(val1, val2); ` ` `  `        ``// Display the result ` `        ``Console.WriteLine(``"Addition is: {0}"``, result); ` `    ``} ` `} `

Output:

```Addition is: 939
```

#### Operators

Operator Description
Decrement(Decimal) Decrements the Decimal operand by one.
Division(Decimal, Decimal) Divides two specified Decimal values.
Equality(Decimal, Decimal) Returns a value that indicates whether two Decimal values are equal.
Explicit(Single to Decimal) Defines an explicit conversion of a single-precision floating-point number to a Decimal.
Explicit(Double to Decimal) Defines an explicit conversion of a double-precision floating-point number to a Decimal.
Explicit(Decimal to UInt32) Defines an explicit conversion of a Decimal to a 32-bit unsigned integer.
Explicit(Decimal to UInt16) Defines an explicit conversion of a Decimal to a 16-bit unsigned integer.
Explicit(Decimal to Single) Defines an explicit conversion of a Decimal to a single-precision floating-point number.
Explicit(Decimal to SByte) Defines an explicit conversion of a Decimal to an 8-bit signed integer.
Explicit(Decimal to UInt64) Defines an explicit conversion of a Decimal to a 64-bit unsigned integer.

Explicit(Decimal to Int32) Defines an explicit conversion of a Decimal to a 32-bit signed integer.
Explicit(Decimal to Int16) Defines an explicit conversion of a Decimal to a 16-bit signed integer.
Explicit(Decimal to Double) Defines an explicit conversion of a Decimal to a double-precision floating-point number.
Explicit(Decimal to Char) Defines an explicit conversion of a Decimal to a Unicode character.
Explicit(Decimal to Byte) Defines an explicit conversion of a Decimal to an 8-bit unsigned integer.
Explicit(Decimal to Int64) Defines an explicit conversion of a Decimal to a 64-bit signed integer.
GreaterThan(Decimal, Decimal) Returns a value indicating whether a specified Decimal is greater than another specified Decimal.
GreaterThanOrEqual(Decimal, Decimal) Returns a value indicating whether a specified Decimal is greater than or equal to another specified Decimal.

Implicit(UInt32 to Decimal) Defines an implicit conversion of a 32-bit unsigned integer to a Decimal.
Implicit(UInt16 to Decimal) Defines an implicit conversion of a 16-bit unsigned integer to a Decimal.
Implicit(SByte to Decimal) Defines an implicit conversion of an 8-bit signed integer to a Decimal.
Implicit(Int64 to Decimal) Defines an implicit conversion of a 64-bit signed integer to a Decimal.
Implicit(Byte to Decimal) Defines an implicit conversion of an 8-bit unsigned integer to a Decimal.
Implicit(Int16 to Decimal) Defines an implicit conversion of a 16-bit signed integer to a Decimal.
Implicit(Char to Decimal) Defines an implicit conversion of a Unicode character to a Decimal.
Implicit(UInt64 to Decimal) Defines an implicit conversion of a 64-bit unsigned integer to a Decimal.
Implicit(Int32 to Decimal) Defines an implicit conversion of a 32-bit signed integer to a Decimal.
Increment(Decimal) Increments the Decimal operand by 1.
Inequality(Decimal, Decimal) Returns a value that indicates whether two Decimal objects have different values.
LessThan(Decimal, Decimal) Returns a value indicating whether a specified Decimal is less than another specified Decimal.
LessThanOrEqual(Decimal, Decimal) Returns a value indicating whether a specified Decimal is less than or equal to another specified Decimal.
Modulus(Decimal, Decimal) Returns the remainder resulting from dividing two specified Decimal values.
Multiply(Decimal, Decimal) Multiplies two specified Decimal values.
Subtraction(Decimal, Decimal) Subtracts two specified Decimal values.
UnaryNegation(Decimal) Negates the value of the specified Decimal operand.
UnaryPlus(Decimal) Returns the value of the Decimal operand (the sign of the operand is unchanged).

Example:

 `// C# program to illustrate the ` `// use of Decrement and Increment ` `// operator ` `using` `System; ` ` `  `class` `GFG { ` ` `  `    ``static` `public` `void` `Main() ` `    ``{ ` `        ``Decimal myval1 = 1000; ` `        ``Decimal myval2 = 10000; ` ` `  `        ``// Using Decrement operator we decrease myval1 by 1 ` `        ``Console.WriteLine(``"My value 1 is: {0}"``, myval1); ` `        ``Console.WriteLine(``"Decrease myval1 by 1:{0}"``, --myval1); ` `        ``Console.WriteLine(); ` ` `  `        ``// Using Increment operator we increase myval2 by 1 ` `        ``Console.WriteLine(``"My value 2 is: {0}"``, myval2); ` `        ``Console.WriteLine(``"Increase myval2 by 1:{0}"``, ++myval2); ` `    ``} ` `} `

Output:

```My value 1 is: 1000
Decrease myval1 by 1:999

My value 2 is: 10000
Increase myval2 by 1:10001
```

Reference:

## tags:

C# CSharp-Decimal-Struct