2002-08-21 Miguel de Icaza <miguel@ximian.com>
[mono.git] / mcs / class / corlib / System / Double.cs
index 9983aedf9012c275cbf3d434a425548075f96fc7..7f72c334561992a7ad3dd881b45001cd0c08d56e 100644 (file)
@@ -35,22 +35,29 @@ namespace System {
                        if (!(v is System.Double))
                                throw new ArgumentException (Locale.GetText ("Value is not a System.Double"));
 
-                       if (IsPositiveInfinity(value) && IsPositiveInfinity((double) v)){
+                       double dv = (double)v;
+
+                       if (IsPositiveInfinity(value) && IsPositiveInfinity(dv))
                                return 0;
-                       }
 
-                       if (IsNegativeInfinity(value) && IsNegativeInfinity((double) v)){
+                       if (IsNegativeInfinity(value) && IsNegativeInfinity(dv))
                                return 0;
-                       }
 
-                       if (IsNaN((double) v)) {
+                       if (IsNaN(dv))
                                if (IsNaN(value))
                                        return 0;
                                else
                                        return 1;
-                       }
 
-                       return (int) (value - ((double) v));
+                       if (IsNaN(value))
+                               if (IsNaN(dv))
+                                       return 0;
+                               else
+                                       return -1;
+
+                       if (value > dv) return 1;
+                       else if (value < dv) return -1;
+                       else return 0;
                }
 
                public override bool Equals (object o)