Explorar el Código

[java/cs] Fixed double comparison. Closes #2051

Caue Waneck hace 12 años
padre
commit
485c7a594a
Se han modificado 2 ficheros con 6 adiciones y 7 borrados
  1. 4 5
      std/cs/internal/Runtime.hx
  2. 2 2
      std/java/internal/Runtime.hx

+ 4 - 5
std/cs/internal/Runtime.hx

@@ -238,12 +238,11 @@ import cs.system.Type;
 					double d1 = (double) v1;
 					double d1 = (double) v1;
 					double d2 = cv2.ToDouble(null);
 					double d2 = cv2.ToDouble(null);
 
 
-					if (double.IsInfinity(d1) || double.IsInfinity(d2))
-						return (d1 < d2) ? -1 : (d1 > d2) ? 1 : 0;
-					else
-						return (int) (d1 - d2);
+          return (d1 < d2) ? -1 : (d1 > d2) ? 1 : 0;
 					default:
 					default:
-						return ((int) (cv1.ToDouble(null) - cv2.ToDouble(null)));
+            double d1d = cv1.ToDouble(null);
+            double d2d = cv2.ToDouble(null);
+            return (d1d < d2d) ? -1 : (d1d > d2d) ? 1 : 0;
 				}
 				}
 			}
 			}
 
 

+ 2 - 2
std/java/internal/Runtime.hx

@@ -223,12 +223,12 @@ package java.internal;
 				{
 				{
 					long l1 = (v1 == null) ? 0L : v1c.longValue();
 					long l1 = (v1 == null) ? 0L : v1c.longValue();
 					long l2 = (v2 == null) ? 0L : v2c.longValue();
 					long l2 = (v2 == null) ? 0L : v2c.longValue();
-					return (int) (l1 - l2);
+          return (l1 < l2) ? -1 : (l1 > l2) ? 1 : 0;
 				} else {
 				} else {
 					double d1 = (v1 == null) ? 0.0 : v1c.doubleValue();
 					double d1 = (v1 == null) ? 0.0 : v1c.doubleValue();
 					double d2 = (v2 == null) ? 0.0 : v2c.doubleValue();
 					double d2 = (v2 == null) ? 0.0 : v2c.doubleValue();
 
 
-					return (int) (d1 - d2);
+          return (d1 < d2) ? -1 : (d1 > d2) ? 1 : 0;
 				}
 				}
 			}
 			}
 			//if it\'s not a number it must be a String
 			//if it\'s not a number it must be a String