[Mono-bugs] [Bug 710262] Dictionary<decimal, > works differently on Mono and .NET

bugzilla_noreply at novell.com bugzilla_noreply at novell.com
Thu Aug 4 14:43:57 EDT 2011



Kornél Pál <kornelpal at gmail.com> changed:

           What    |Removed                     |Added
                 CC|                            |kornelpal at gmail.com

--- Comment #2 from Kornél Pál <kornelpal at gmail.com> 2011-08-04 18:43:56 UTC ---
Using Double.GetHashCode seems to be an easy and straightforward solution.

I was doing some testing using MS.NET 4.0 and found out that they actually do
the same.

Console.WriteLine(Decimal.Equals(0.5m, 0.500m));               // True
Console.WriteLine(0.5m.GetHashCode() == 0.500m.GetHashCode()); // True
Console.WriteLine(0.500m.GetHashCode() == 0.5d.GetHashCode()); // True

The testing also uncovered the bug that +0 and -0 have diffent hash codes on
Mono while they should have the same because they are equal:

Console.WriteLine(Double.Equals(0d, -0d));                     // True
Console.WriteLine(0d.GetHashCode() == (-0d).GetHashCode());    // True
Console.WriteLine(Single.Equals(0f, -0f));                     // True
Console.WriteLine(0f.GetHashCode() == (-0f).GetHashCode());    // True

The same is true for Decimal (works with Mono):

Console.WriteLine(Decimal.Equals(0m, -0m));                    // True
Console.WriteLine(0m.GetHashCode() == (-0m).GetHashCode());    // True

Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.

More information about the mono-bugs mailing list