# Decimal.Equals Method

## Definition

Returns a value indicating whether two instances of Decimal represent the same value.

 Equals(Decimal) Returns a value indicating whether this instance and a specified Decimal object represent the same value. Equals(Object) Returns a value indicating whether this instance and a specified Object represent the same type and value. Equals(Decimal, Decimal) Returns a value indicating whether two specified instances of Decimal represent the same value.

## Equals(Decimal)

Returns a value indicating whether this instance and a specified Decimal object represent the same value.

``````public:
virtual bool Equals(System::Decimal value);``````
``public bool Equals (decimal value);``
``override this.Equals : decimal -> bool``
``Public Function Equals (value As Decimal) As Boolean``

#### Parameters

value
Decimal

An object to compare to this instance.

#### Returns

`true` if `value` is equal to this instance; otherwise, `false`.

### Remarks

This method implements the System.IEquatable<T> interface, and performs slightly better than Equals because it does not have to convert the `value` parameter to an object.

If `value` has fewer bits (is narrower) than the instance type, some programming languages perform an implicit widening conversion that transforms the value of the parameter into a value with more bits.

For example, suppose the instance type is Int32 and the parameter type is Byte. The Microsoft C# compiler generates instructions to represent the value of the parameter as an Int32 object, then generates a Int32.CompareTo method to compare the Int32 instance and parameter representation.

Consult your programming language's documentation to determine whether its compiler performs implicit widening conversions on numeric types.

### Notes to Callers

Compiler overload resolution may account for an apparent difference in the behavior of the two Equals(Object) method overloads. If an implicit conversion between the `obj` argument and a Decimal is defined and the argument is not typed as an Object, compilers may perform an implicit conversion and call the Equals(Decimal) method. Otherwise, they call the Equals(Object) method, which always returns `false` if its `obj` argument is not a Decimal value. The following example illustrates the difference in behavior between the two method overloads. In the case of all primitive integral types, including both signed and unsigned types, the first comparison returns `true` because the compiler automatically performs a widening conversion and calls the Equals(Decimal) method, whereas the second comparison returns `false` because the compiler calls the Equals(Object) method.

``````using System;

public class Example
{
static decimal value = 112m;

public static void Main()
{
byte byte1= 112;
Console.WriteLine("value = byte1: {0,17}", value.Equals(byte1));
TestObjectForEquality(byte1);

short short1 = 112;
Console.WriteLine("value = short1: {0,17}", value.Equals(short1));
TestObjectForEquality(short1);

int int1 = 112;
Console.WriteLine("value = int1: {0,19}", value.Equals(int1));
TestObjectForEquality(int1);

long long1 = 112;
Console.WriteLine("value = long1: {0,18}", value.Equals(long1));
TestObjectForEquality(long1);

sbyte sbyte1 = 112;
Console.WriteLine("value = sbyte1: {0,17}", value.Equals(sbyte1));
TestObjectForEquality(sbyte1);

ushort ushort1 = 112;
Console.WriteLine("value = ushort1: {0,17}", value.Equals(ushort1));
TestObjectForEquality(ushort1);

uint uint1 = 112;
Console.WriteLine("value = uint1: {0,19}", value.Equals(uint1));
TestObjectForEquality(uint1);

ulong ulong1 = 112;
Console.WriteLine("value = ulong1: {0,18}", value.Equals(ulong1));
TestObjectForEquality(ulong1);

float sng1 = 112;
Console.WriteLine("value = sng1: {0,21}", value.Equals(sng1));
TestObjectForEquality(sng1);

double dbl1 = 112;
Console.WriteLine("value = dbl1: {0,21}", value.Equals(dbl1));
TestObjectForEquality(dbl1);
}

private static void TestObjectForEquality(Object obj)
{
Console.WriteLine("{0} ({1}) = {2} ({3}): {4}\n",
value, value.GetType().Name,
obj, obj.GetType().Name,
value.Equals(obj));
}
}
// The example displays the following output:
//       value = byte1:             True
//       112 (Double) = 112 (Byte): False
//
//       value = short1:             True
//       112 (Double) = 112 (Int16): False
//
//       value = int1:               True
//       112 (Double) = 112 (Int32): False
//
//       value = long1:              True
//       112 (Double) = 112 (Int64): False
//
//       value = sbyte1:             True
//       112 (Double) = 112 (SByte): False
//
//       value = ushort1:             True
//       112 (Double) = 112 (UInt16): False
//
//       value = uint1:               True
//       112 (Double) = 112 (UInt32): False
//
//       value = ulong1:              True
//       112 (Double) = 112 (UInt64): False
//
//       value = dec1:                 False
//       112 (Double) = 112 (Decimal): False
//
//       value = sng1:                True
//       112 (Double) = 112 (Single): False
``````
``````Module Example
Dim value As Decimal = 112d

Public Sub Main()
Dim byte1 As Byte = 112
Console.WriteLine("value = byte1: {0,17}", value.Equals(byte1))
TestObjectForEquality(byte1)

Dim short1 As Short = 112
Console.WriteLine("value = short1: {0,17}", value.Equals(short1))
TestObjectForEquality(short1)

Dim int1 As Integer = 112
Console.WriteLine("value = int1: {0,19}", value.Equals(int1))
TestObjectForEquality(int1)

Dim long1 As Long = 112
Console.WriteLine("value = long1: {0,18}", value.Equals(long1))
TestObjectForEquality(long1)

Dim sbyte1 As SByte = 112
Console.WriteLine("value = sbyte1: {0,17}", value.Equals(sbyte1))
TestObjectForEquality(sbyte1)

Dim ushort1 As UShort = 112
Console.WriteLine("value = ushort1: {0,17}", value.Equals(ushort1))
TestObjectForEquality(ushort1)

Dim uint1 As UInteger = 112
Console.WriteLine("value = uint1: {0,19}", value.Equals(uint1))
TestObjectForEquality(uint1)

Dim ulong1 As ULong = 112
Console.WriteLine("value = ulong1: {0,18}", value.Equals(ulong1))
TestObjectForEquality(ulong1)

Dim sng1 As Single = 112
Console.WriteLine("value = sng1: {0,21}", value.Equals(sng1))
TestObjectForEquality(sng1)

Dim dbl1 As Double = 112
Console.WriteLine("value = dbl1: {0,21}", value.Equals(dbl1))
TestObjectForEquality(dbl1)
End Sub

Private Sub TestObjectForEquality(obj As Object)
Console.WriteLine("{0} ({1}) = {2} ({3}): {4}",
value, value.GetType().Name,
obj, obj.GetType().Name,
value.Equals(obj))
Console.WriteLine()
End Sub
End Module
' The example displays the following output:
'       value = byte1:             True
'       112 (Double) = 112 (Byte): False
'
'       value = short1:             True
'       112 (Double) = 112 (Int16): False
'
'       value = int1:               True
'       112 (Double) = 112 (Int32): False
'
'       value = long1:              True
'       112 (Double) = 112 (Int64): False
'
'       value = sbyte1:             True
'       112 (Double) = 112 (SByte): False
'
'       value = ushort1:             True
'       112 (Double) = 112 (UInt16): False
'
'       value = uint1:               True
'       112 (Double) = 112 (UInt32): False
'
'       value = ulong1:              True
'       112 (Double) = 112 (UInt64): False
'
'       value = dec1:                 True
'       112 (Double) = 112 (Decimal): False
'
'       value = sng1:                True
'       112 (Double) = 112 (Single): False
``````

## Equals(Object)

Returns a value indicating whether this instance and a specified Object represent the same type and value.

``````public:
override bool Equals(System::Object ^ value);``````
``public override bool Equals (object value);``
``override this.Equals : obj -> bool``
``Public Overrides Function Equals (value As Object) As Boolean``

#### Parameters

value
Object

The object to compare with this instance.

#### Returns

`true` if `value` is a Decimal and equal to this instance; otherwise, `false`.

### Examples

The following code example compares several `Decimal` and other objects to a reference `Decimal` value using the `Equals` method.

``````// Example of the Decimal::CompareTo and Decimal::Equals instance
// methods.
using namespace System;

// Get the exception type name; remove the namespace prefix.
String^ GetExceptionType( Exception^ ex )
{
String^ exceptionType = ex->GetType()->ToString();
return exceptionType->Substring( exceptionType->LastIndexOf( '.' ) + 1 );
}

// Compare the Decimal to the Object parameters,
// and display the Object parameters with the results.
void CompDecimalToObject( Decimal Left, Object^ Right, String^ RightText )
{
Console::WriteLine( "{0,-46}{1}", String::Concat( "Object: ", RightText ), Right );
Console::WriteLine( "{0,-46}{1}", "Left.Equals( Object )", Left.Equals( Right ) );
Console::Write( "{0,-46}", "Left.CompareTo( Object )" );
try
{

// Catch the exception if CompareTo( ) throws one.
Console::WriteLine( "{0}\n", Left.CompareTo( Right ) );
}
catch ( Exception^ ex )
{
Console::WriteLine( "{0}\n", GetExceptionType( ex ) );
}

}

int main()
{
Console::WriteLine( "This example of the Decimal::Equals( Object* ) and \n"
"Decimal::CompareTo( Object* ) methods generates the \n"
"following output. It creates several different "
"Decimal \nvalues and compares them with the following "
"reference value.\n" );

// Create a reference Decimal value.
Decimal Left = Decimal(987.654);
Console::WriteLine( "{0,-46}{1}\n", "Left: Decimal( 987.654 )", Left );

// Create objects to compare with the reference.
CompDecimalToObject( Left, Decimal(9.8765400E+2), "Decimal( 9.8765400E+2 )" );
CompDecimalToObject( Left, Decimal::Parse( "987.6541" ), "Decimal::Parse( \"987.6541\" )" );
CompDecimalToObject( Left, Decimal::Parse( "987.6539" ), "Decimal::Parse( \"987.6539\" )" );
CompDecimalToObject( Left, Decimal(987654000,0,0,false,6), "Decimal( 987654000, 0, 0, false, 6 )" );
CompDecimalToObject( Left, 9.8765400E+2, "Double 9.8765400E+2" );
CompDecimalToObject( Left, "987.654", "String \"987.654\"" );
}

/*
This example of the Decimal::Equals( Object* ) and
Decimal::CompareTo( Object* ) methods generates the
following output. It creates several different Decimal
values and compares them with the following reference value.

Left: Decimal( 987.654 )                      987.654

Object: Decimal( 9.8765400E+2 )               987.654
Left.Equals( Object )                         True
Left.CompareTo( Object )                      0

Object: Decimal::Parse( "987.6541" )          987.6541
Left.Equals( Object )                         False
Left.CompareTo( Object )                      -1

Object: Decimal::Parse( "987.6539" )          987.6539
Left.Equals( Object )                         False
Left.CompareTo( Object )                      1

Object: Decimal( 987654000, 0, 0, false, 6 )  987.654000
Left.Equals( Object )                         True
Left.CompareTo( Object )                      0

Object: Double 9.8765400E+2                   987.654
Left.Equals( Object )                         False
Left.CompareTo( Object )                      ArgumentException

Object: String "987.654"                      987.654
Left.Equals( Object )                         False
Left.CompareTo( Object )                      ArgumentException
*/
``````
``````// Example of the decimal.CompareTo and decimal.Equals instance
// methods.
using System;

class DecCompToEqualsObjDemo
{
// Get the exception type name; remove the namespace prefix.
public static string GetExceptionType( Exception ex )
{
string exceptionType = ex.GetType( ).ToString( );
return exceptionType.Substring(
exceptionType.LastIndexOf( '.' ) + 1 );
}

// Compare the decimal to the object parameters,
// and display the object parameters with the results.
public static void CompDecimalToObject( decimal Left,
object Right, string RightText )
{

Console.WriteLine( "{0,-46}{1}", "object: "+RightText,
Right );
Console.WriteLine( "{0,-46}{1}", "Left.Equals( object )",
Left.Equals( Right ) );
Console.Write( "{0,-46}", "Left.CompareTo( object )" );

try
{
// Catch the exception if CompareTo( ) throws one.
Console.WriteLine( "{0}\n", Left.CompareTo( Right ) );
}
catch( Exception ex )
{
Console.WriteLine( "{0}\n", GetExceptionType( ex ) );
}
}

public static void Main( )
{
Console.WriteLine(
"This example of the decimal.Equals( object ) and \n" +
"decimal.CompareTo( object ) methods generates the \n" +
"following output. It creates several different " +
"decimal \nvalues and compares them with the following " +
"reference value.\n" );

// Create a reference decimal value.
decimal Left = new decimal( 987.654 );

Console.WriteLine( "{0,-46}{1}\n",
"Left: decimal( 987.654 )", Left );

// Create objects to compare with the reference.
CompDecimalToObject( Left, new decimal( 9.8765400E+2 ),
"decimal( 9.8765400E+2 )" );
CompDecimalToObject( Left, 987.6541M, "987.6541D" );
CompDecimalToObject( Left, 987.6539M, "987.6539D" );
CompDecimalToObject( Left,
new decimal( 987654000, 0, 0, false, 6 ),
"decimal( 987654000, 0, 0, false, 6 )" );
CompDecimalToObject( Left, 9.8765400E+2,
"Double 9.8765400E+2" );
CompDecimalToObject( Left, "987.654", "String \"987.654\"" );
}
}

/*
This example of the decimal.Equals( object ) and
decimal.CompareTo( object ) methods generates the
following output. It creates several different decimal
values and compares them with the following reference value.

Left: decimal( 987.654 )                      987.654

object: decimal( 9.8765400E+2 )               987.654
Left.Equals( object )                         True
Left.CompareTo( object )                      0

object: 987.6541D                             987.6541
Left.Equals( object )                         False
Left.CompareTo( object )                      -1

object: 987.6539D                             987.6539
Left.Equals( object )                         False
Left.CompareTo( object )                      1

object: decimal( 987654000, 0, 0, false, 6 )  987.654000
Left.Equals( object )                         True
Left.CompareTo( object )                      0

object: Double 9.8765400E+2                   987.654
Left.Equals( object )                         False
Left.CompareTo( object )                      ArgumentException

object: String "987.654"                      987.654
Left.Equals( object )                         False
Left.CompareTo( object )                      ArgumentException
*/
``````
``````' Example of the Decimal.CompareTo and Decimal.Equals instance methods.
Module DecCompToEqualsObjDemo

' Get the exception type name; remove the namespace prefix.
Function GetExceptionType( ex As Exception ) As String

Dim exceptionType   As String = ex.GetType( ).ToString( )
Return exceptionType.Substring( _
exceptionType.LastIndexOf( "."c ) + 1 )
End Function

' Compare the Decimal to the Object parameters,
' and display the Object parameters with the results.
Sub CompDecimalToObject( Left as Decimal, Right as Object, _
RightText as String )

Console.WriteLine( "{0,-46}{1}", "Object: " & RightText, _
Right )
Console.WriteLine( "{0,-46}{1}", "Left.Equals( Object )", _
Left.Equals( Right ) )
Console.Write( "{0,-46}", "Left.CompareTo( Object )" )

' Catch the exception if CompareTo( ) throws one.
Try
Console.WriteLine( "{0}" & vbCrLf, _
Left.CompareTo( Right ) )
Catch ex As Exception
Console.WriteLine( "{0}" & vbCrLf, _
GetExceptionType( ex ) )
End Try
End Sub

Sub Main( )
Console.WriteLine( _
"This example of the Decimal.Equals( Object ) " & _
"and " & vbCrLf & "Decimal.CompareTo( Object ) " & _
"methods generates the " & vbCrLf & _
"following output. It creates several different " & _
"Decimal " & vbCrLf & "values and compares them " & _
"with the following reference value." & vbCrLf )

' Create a reference Decimal value.
Dim Left as New Decimal( 987.654 )

Console.WriteLine( "{0,-46}{1}" & vbCrLf, _
"Left: Decimal( 987.654 )", Left )

' Create objects to compare with the reference.
CompDecimalToObject( Left, New Decimal( 9.8765400E+2 ), _
"Decimal( 9.8765400E+2 )" )
CompDecimalToObject( Left, 987.6541D, "987.6541D" )
CompDecimalToObject( Left, 987.6539D, "987.6539D" )
CompDecimalToObject( Left, _
New Decimal( 987654000, 0, 0, false, 6 ), _
"Decimal( 987654000, 0, 0, false, 6 )" )
CompDecimalToObject( Left, 9.8765400E+2, _
"Double 9.8765400E+2" )
CompDecimalToObject( Left, "987.654", _
"String ""987.654""" )
End Sub
End Module

' This example of the Decimal.Equals( Object ) and
' Decimal.CompareTo( Object ) methods generates the
' following output. It creates several different Decimal
' values and compares them with the following reference value.
'
' Left: Decimal( 987.654 )                      987.654
'
' Object: Decimal( 9.8765400E+2 )               987.654
' Left.Equals( Object )                         True
' Left.CompareTo( Object )                      0
'
' Object: 987.6541D                             987.6541
' Left.Equals( Object )                         False
' Left.CompareTo( Object )                      -1
'
' Object: 987.6539D                             987.6539
' Left.Equals( Object )                         False
' Left.CompareTo( Object )                      1
'
' Object: Decimal( 987654000, 0, 0, false, 6 )  987.654000
' Left.Equals( Object )                         True
' Left.CompareTo( Object )                      0
'
' Object: Double 9.8765400E+2                   987.654
' Left.Equals( Object )                         False
' Left.CompareTo( Object )                      ArgumentException
'
' Object: String "987.654"                      987.654
' Left.Equals( Object )                         False
' Left.CompareTo( Object )                      ArgumentException
``````

### Notes to Callers

Compiler overload resolution may account for an apparent difference in the behavior of the two Equals(Object) method overloads. If an implicit conversion between the `obj` argument and a Decimal is defined and the argument is not typed as an Object, compilers may perform an implicit conversion and call the Equals(Decimal) method. Otherwise, they call the Equals(Object) method, which always returns `false` if its `obj` argument is not a Decimal value. The following example illustrates the difference in behavior between the two method overloads. In the case of all primitive integral types, including both signed and unsigned types, the first comparison returns `true` because the compiler automatically performs a widening conversion and calls the Equals(Decimal) method, whereas the second comparison returns `false` because the compiler calls the Equals(Object) method.

``````using System;

public class Example
{
static decimal value = 112m;

public static void Main()
{
byte byte1= 112;
Console.WriteLine("value = byte1: {0,17}", value.Equals(byte1));
TestObjectForEquality(byte1);

short short1 = 112;
Console.WriteLine("value = short1: {0,17}", value.Equals(short1));
TestObjectForEquality(short1);

int int1 = 112;
Console.WriteLine("value = int1: {0,19}", value.Equals(int1));
TestObjectForEquality(int1);

long long1 = 112;
Console.WriteLine("value = long1: {0,18}", value.Equals(long1));
TestObjectForEquality(long1);

sbyte sbyte1 = 112;
Console.WriteLine("value = sbyte1: {0,17}", value.Equals(sbyte1));
TestObjectForEquality(sbyte1);

ushort ushort1 = 112;
Console.WriteLine("value = ushort1: {0,17}", value.Equals(ushort1));
TestObjectForEquality(ushort1);

uint uint1 = 112;
Console.WriteLine("value = uint1: {0,19}", value.Equals(uint1));
TestObjectForEquality(uint1);

ulong ulong1 = 112;
Console.WriteLine("value = ulong1: {0,18}", value.Equals(ulong1));
TestObjectForEquality(ulong1);

float sng1 = 112;
Console.WriteLine("value = sng1: {0,21}", value.Equals(sng1));
TestObjectForEquality(sng1);

double dbl1 = 112;
Console.WriteLine("value = dbl1: {0,21}", value.Equals(dbl1));
TestObjectForEquality(dbl1);
}

private static void TestObjectForEquality(Object obj)
{
Console.WriteLine("{0} ({1}) = {2} ({3}): {4}\n",
value, value.GetType().Name,
obj, obj.GetType().Name,
value.Equals(obj));
}
}
// The example displays the following output:
//       value = byte1:             True
//       112 (Double) = 112 (Byte): False
//
//       value = short1:             True
//       112 (Double) = 112 (Int16): False
//
//       value = int1:               True
//       112 (Double) = 112 (Int32): False
//
//       value = long1:              True
//       112 (Double) = 112 (Int64): False
//
//       value = sbyte1:             True
//       112 (Double) = 112 (SByte): False
//
//       value = ushort1:             True
//       112 (Double) = 112 (UInt16): False
//
//       value = uint1:               True
//       112 (Double) = 112 (UInt32): False
//
//       value = ulong1:              True
//       112 (Double) = 112 (UInt64): False
//
//       value = dec1:                 False
//       112 (Double) = 112 (Decimal): False
//
//       value = sng1:                True
//       112 (Double) = 112 (Single): False
``````
``````Module Example
Dim value As Decimal = 112d

Public Sub Main()
Dim byte1 As Byte = 112
Console.WriteLine("value = byte1: {0,17}", value.Equals(byte1))
TestObjectForEquality(byte1)

Dim short1 As Short = 112
Console.WriteLine("value = short1: {0,17}", value.Equals(short1))
TestObjectForEquality(short1)

Dim int1 As Integer = 112
Console.WriteLine("value = int1: {0,19}", value.Equals(int1))
TestObjectForEquality(int1)

Dim long1 As Long = 112
Console.WriteLine("value = long1: {0,18}", value.Equals(long1))
TestObjectForEquality(long1)

Dim sbyte1 As SByte = 112
Console.WriteLine("value = sbyte1: {0,17}", value.Equals(sbyte1))
TestObjectForEquality(sbyte1)

Dim ushort1 As UShort = 112
Console.WriteLine("value = ushort1: {0,17}", value.Equals(ushort1))
TestObjectForEquality(ushort1)

Dim uint1 As UInteger = 112
Console.WriteLine("value = uint1: {0,19}", value.Equals(uint1))
TestObjectForEquality(uint1)

Dim ulong1 As ULong = 112
Console.WriteLine("value = ulong1: {0,18}", value.Equals(ulong1))
TestObjectForEquality(ulong1)

Dim sng1 As Single = 112
Console.WriteLine("value = sng1: {0,21}", value.Equals(sng1))
TestObjectForEquality(sng1)

Dim dbl1 As Double = 112
Console.WriteLine("value = dbl1: {0,21}", value.Equals(dbl1))
TestObjectForEquality(dbl1)
End Sub

Private Sub TestObjectForEquality(obj As Object)
Console.WriteLine("{0} ({1}) = {2} ({3}): {4}",
value, value.GetType().Name,
obj, obj.GetType().Name,
value.Equals(obj))
Console.WriteLine()
End Sub
End Module
' The example displays the following output:
'       value = byte1:             True
'       112 (Double) = 112 (Byte): False
'
'       value = short1:             True
'       112 (Double) = 112 (Int16): False
'
'       value = int1:               True
'       112 (Double) = 112 (Int32): False
'
'       value = long1:              True
'       112 (Double) = 112 (Int64): False
'
'       value = sbyte1:             True
'       112 (Double) = 112 (SByte): False
'
'       value = ushort1:             True
'       112 (Double) = 112 (UInt16): False
'
'       value = uint1:               True
'       112 (Double) = 112 (UInt32): False
'
'       value = ulong1:              True
'       112 (Double) = 112 (UInt64): False
'
'       value = dec1:                 True
'       112 (Double) = 112 (Decimal): False
'
'       value = sng1:                True
'       112 (Double) = 112 (Single): False
``````

## Equals(Decimal, Decimal)

Returns a value indicating whether two specified instances of Decimal represent the same value.

``````public:
static bool Equals(System::Decimal d1, System::Decimal d2);``````
``public static bool Equals (decimal d1, decimal d2);``
``static member Equals : decimal * decimal -> bool``
``Public Shared Function Equals (d1 As Decimal, d2 As Decimal) As Boolean``

#### Parameters

d1
Decimal

The first value to compare.

d2
Decimal

The second value to compare.

#### Returns

`true` if `d1` and `d2` are equal; otherwise, `false`.

### Examples

The following code example compares several `Decimal` values to a reference `Decimal` value using the static `Equals` method.

``````// Example of the Decimal::Compare and static Decimal::Equals methods.
using namespace System;
const __wchar_t * protoFmt = L"{0,-45}{1}";

// Compare Decimal parameters, and display them with the results.
void CompareDecimals( Decimal Left, Decimal Right, String^ RightText )
{
String^ dataFmt = gcnew String( protoFmt );
Console::WriteLine();
Console::WriteLine( dataFmt, String::Concat( "Right: ", RightText ), Right );
Console::WriteLine( dataFmt, "Decimal::Equals( Left, Right )", Decimal::Equals( Left, Right ) );
Console::WriteLine( dataFmt, "Decimal::Compare( Left, Right )", Decimal::Compare( Left, Right ) );
}

int main()
{
Console::WriteLine( "This example of the Decimal::Equals( Decimal, Decimal "
") and \nDecimal::Compare( Decimal, Decimal ) "
"methods generates the \nfollowing output. It creates "
"several different Decimal \nvalues and compares them "
"with the following reference value.\n" );

// Create a reference Decimal value.
Decimal Left = Decimal(123.456);
Console::WriteLine( gcnew String( protoFmt ), "Left: Decimal( 123.456 )", Left );

// Create Decimal values to compare with the reference.
CompareDecimals( Left, Decimal(1.2345600E+2), "Decimal( 1.2345600E+2 )" );
CompareDecimals( Left, Decimal::Parse( "123.4561" ), "Decimal::Parse( \"123.4561\" )" );
CompareDecimals( Left, Decimal::Parse( "123.4559" ), "Decimal::Parse( \"123.4559\" )" );
CompareDecimals( Left, Decimal::Parse( "123.456000" ), "Decimal::Parse( \"123.456000\" )" );
CompareDecimals( Left, Decimal(123456000,0,0,false,6), "Decimal( 123456000, 0, 0, false, 6 )" );
}

/*
This example of the Decimal::Equals( Decimal, Decimal ) and
Decimal::Compare( Decimal, Decimal ) methods generates the
following output. It creates several different Decimal
values and compares them with the following reference value.

Left: Decimal( 123.456 )                     123.456

Right: Decimal( 1.2345600E+2 )               123.456
Decimal::Equals( Left, Right )               True
Decimal::Compare( Left, Right )              0

Right: Decimal::Parse( "123.4561" )          123.4561
Decimal::Equals( Left, Right )               False
Decimal::Compare( Left, Right )              -1

Right: Decimal::Parse( "123.4559" )          123.4559
Decimal::Equals( Left, Right )               False
Decimal::Compare( Left, Right )              1

Right: Decimal::Parse( "123.456000" )        123.456000
Decimal::Equals( Left, Right )               True
Decimal::Compare( Left, Right )              0

Right: Decimal( 123456000, 0, 0, false, 6 )  123.456000
Decimal::Equals( Left, Right )               True
Decimal::Compare( Left, Right )              0
*/
``````
``````// Example of the decimal.Compare and static decimal.Equals methods.
using System;

class DecCompareEqualsDemo
{
const string dataFmt = "{0,-45}{1}";

// Compare decimal parameters, and display them with the results.
public static void CompareDecimals( decimal Left, decimal Right,
string RightText )
{
Console.WriteLine( );
Console.WriteLine( dataFmt, "Right: "+RightText, Right );
Console.WriteLine( dataFmt, "decimal.Equals( Left, Right )",
Decimal.Equals( Left, Right ) );
Console.WriteLine( dataFmt, "decimal.Compare( Left, Right )",
Decimal.Compare( Left, Right ) );
}

public static void Main( )
{
Console.WriteLine( "This example of the " +
"decimal.Equals( decimal, decimal ) and \n" +
"decimal.Compare( decimal, decimal ) methods " +
"generates the \nfollowing output. It creates several " +
"different decimal \nvalues and compares them with " +
"the following reference value.\n" );

// Create a reference decimal value.
decimal Left = new decimal( 123.456 );

Console.WriteLine( dataFmt, "Left: decimal( 123.456 )",
Left );

// Create decimal values to compare with the reference.
CompareDecimals( Left, new decimal( 1.2345600E+2 ),
"decimal( 1.2345600E+2 )" );
CompareDecimals( Left, 123.4561M, "123.4561M" );
CompareDecimals( Left, 123.4559M, "123.4559M" );
CompareDecimals( Left, 123.456000M, "123.456000M" );
CompareDecimals( Left,
new decimal( 123456000, 0, 0, false, 6 ),
"decimal( 123456000, 0, 0, false, 6 )" );
}
}

/*
This example of the decimal.Equals( decimal, decimal ) and
decimal.Compare( decimal, decimal ) methods generates the
following output. It creates several different decimal
values and compares them with the following reference value.

Left: decimal( 123.456 )                     123.456

Right: decimal( 1.2345600E+2 )               123.456
decimal.Equals( Left, Right )                True
decimal.Compare( Left, Right )               0

Right: 123.4561M                             123.4561
decimal.Equals( Left, Right )                False
decimal.Compare( Left, Right )               -1

Right: 123.4559M                             123.4559
decimal.Equals( Left, Right )                False
decimal.Compare( Left, Right )               1

Right: 123.456000M                           123.456000
decimal.Equals( Left, Right )                True
decimal.Compare( Left, Right )               0

Right: decimal( 123456000, 0, 0, false, 6 )  123.456000
decimal.Equals( Left, Right )                True
decimal.Compare( Left, Right )               0
*/
``````
``````' Example of the Decimal.Compare and static Decimal.Equals methods.
Module DecCompareEqualsDemo

Const dataFmt As String = "{0,-45}{1}"

' Compare Decimal parameters, and display them with the results.
Sub CompareDecimals( Left as Decimal, Right as Decimal, _
RightText as String )

Console.WriteLine( )
Console.WriteLine( dataFmt, "Right: " & RightText, Right )
Console.WriteLine( dataFmt, "Decimal.Equals( Left, Right )", _
Decimal.Equals( Left, Right ) )
Console.WriteLine( dataFmt, _
"Decimal.Compare( Left, Right )", _
Decimal.Compare( Left, Right ) )
End Sub

Sub Main( )
Console.WriteLine( _
"This example of the Decimal.Equals( Decimal, " & _
"Decimal ) and " & vbCrLf & "Decimal.Compare( " & _
"Decimal, Decimal ) methods generates the " & vbCrLf & _
"following output. It creates several different " & _
"Decimal " & vbCrLf & "values and compares them " & _
"with the following reference value." & vbCrLf )

' Create a reference Decimal value.
Dim Left as New Decimal( 123.456 )

Console.WriteLine( dataFmt, "Left: Decimal( 123.456 )", Left )

' Create Decimal values to compare with the reference.
CompareDecimals( Left, New Decimal( 1.2345600E+2 ), _
"Decimal( 1.2345600E+2 )" )
CompareDecimals( Left, 123.4561D, "123.4561D" )
CompareDecimals( Left, 123.4559D, "123.4559D" )
CompareDecimals( Left, 123.456000D, "123.456000D" )
CompareDecimals( Left, _
New Decimal( 123456000, 0, 0, false, 6 ), _
"Decimal( 123456000, 0, 0, false, 6 )" )
End Sub
End Module

' This example of the Decimal.Equals( Decimal, Decimal ) and
' Decimal.Compare( Decimal, Decimal ) methods generates the
' following output. It creates several different Decimal
' values and compares them with the following reference value.
'
' Left: Decimal( 123.456 )                     123.456
'
' Right: Decimal( 1.2345600E+2 )               123.456
' Decimal.Equals( Left, Right )                True
' Decimal.Compare( Left, Right )               0
'
' Right: 123.4561D                             123.4561
' Decimal.Equals( Left, Right )                False
' Decimal.Compare( Left, Right )               -1
'
' Right: 123.4559D                             123.4559
' Decimal.Equals( Left, Right )                False
' Decimal.Compare( Left, Right )               1
'
' Right: 123.456000D                           123.456
' Decimal.Equals( Left, Right )                True
' Decimal.Compare( Left, Right )               0
'
' Right: Decimal( 123456000, 0, 0, false, 6 )  123.456000
' Decimal.Equals( Left, Right )                True
' Decimal.Compare( Left, Right )               0
``````