From 4ce2d46976ef491f47dbf20b8e3475110903bea8 Mon Sep 17 00:00:00 2001 From: Mark Johnson Date: Sat, 13 Nov 2010 00:50:16 +0000 Subject: [PATCH] - fix floorDiv to handle negative divisors correctly git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@1065 ed5b42cb-e716-0410-a449-f6a68f950b19 --- src/main/java/com/threerings/media/util/MathUtil.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/threerings/media/util/MathUtil.java b/src/main/java/com/threerings/media/util/MathUtil.java index 734640c0..2b16bad2 100644 --- a/src/main/java/com/threerings/media/util/MathUtil.java +++ b/src/main/java/com/threerings/media/util/MathUtil.java @@ -103,9 +103,7 @@ public class MathUtil /** * Computes the floored division dividend/divisor which - * is useful when dividing potentially negative numbers into bins. For - * positive numbers, it is the same as normal division, for negative - * numbers it returns (dividend - divisor + 1) / divisor. + * is useful when dividing potentially negative numbers into bins. * *

For example, the following numbers floorDiv 10 are: *

@@ -115,7 +113,9 @@ public class MathUtil
      */
     public static int floorDiv (int dividend, int divisor)
     {
-        return ((dividend >= 0) ? dividend : (dividend - divisor + 1))/divisor;
+        return ((dividend >= 0) == (divisor >= 0)) ?
+            dividend / divisor : (divisor >= 0 ?
+                    (dividend - divisor + 1) / divisor : (dividend - divisor - 1) / divisor);
     }
 
     /**