DRILL-1121: Round up digits while performing mod, decimal division
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/a6e296cd Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/a6e296cd Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/a6e296cd Branch: refs/heads/master Commit: a6e296cde2523976218f5ca5064a8c8b93b3d5e2 Parents: 1a96374 Author: Mehant Baid <[email protected]> Authored: Thu Jul 10 23:23:17 2014 -0700 Committer: Jacques Nadeau <[email protected]> Committed: Sun Jul 20 16:29:07 2014 -0700 ---------------------------------------------------------------------- .../src/main/codegen/templates/Decimal/DecimalFunctions.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/a6e296cd/exec/java-exec/src/main/codegen/templates/Decimal/DecimalFunctions.java ---------------------------------------------------------------------- diff --git a/exec/java-exec/src/main/codegen/templates/Decimal/DecimalFunctions.java b/exec/java-exec/src/main/codegen/templates/Decimal/DecimalFunctions.java index 41a1bb7..03e9a24 100644 --- a/exec/java-exec/src/main/codegen/templates/Decimal/DecimalFunctions.java +++ b/exec/java-exec/src/main/codegen/templates/Decimal/DecimalFunctions.java @@ -537,7 +537,7 @@ public class ${type.name}Functions { java.math.BigDecimal numerator = org.apache.drill.common.util.DecimalUtility.getBigDecimalFromByteBuf(left.buffer, left.start, left.nDecimalDigits, left.scale, true); java.math.BigDecimal denominator = org.apache.drill.common.util.DecimalUtility.getBigDecimalFromByteBuf(right.buffer, right.start, right.nDecimalDigits, right.scale, true); - java.math.BigDecimal output = numerator.divide(denominator, (int) result.scale, java.math.BigDecimal.ROUND_DOWN); + java.math.BigDecimal output = numerator.divide(denominator, (int) result.scale, java.math.BigDecimal.ROUND_HALF_UP); org.apache.drill.common.util.DecimalUtility.getSparseFromBigDecimal(output, result.buffer, result.start, result.scale, result.precision, result.nDecimalDigits); } @@ -576,7 +576,7 @@ public class ${type.name}Functions { java.math.BigDecimal denominator = org.apache.drill.common.util.DecimalUtility.getBigDecimalFromByteBuf(right.buffer, right.start, right.nDecimalDigits, right.scale, true); java.math.BigDecimal output = numerator.remainder(denominator); - output.setScale(result.scale, java.math.BigDecimal.ROUND_DOWN); + output.setScale(result.scale, java.math.BigDecimal.ROUND_HALF_UP); org.apache.drill.common.util.DecimalUtility.getSparseFromBigDecimal(output, result.buffer, result.start, result.scale, result.precision, result.nDecimalDigits); } @@ -1331,7 +1331,7 @@ public class ${type.name}Functions { java.math.BigDecimal numerator = new java.math.BigDecimal(java.math.BigInteger.valueOf(left.value), left.scale); java.math.BigDecimal denominator = new java.math.BigDecimal(java.math.BigInteger.valueOf(right.value), right.scale); - java.math.BigDecimal output = numerator.divide(denominator, (int) result.scale, java.math.BigDecimal.ROUND_DOWN); + java.math.BigDecimal output = numerator.divide(denominator, (int) result.scale, java.math.BigDecimal.ROUND_HALF_UP); result.value = output.unscaledValue().${type.storage}Value(); } @@ -1363,7 +1363,7 @@ public class ${type.name}Functions { java.math.BigDecimal denominator = new java.math.BigDecimal(java.math.BigInteger.valueOf(right.value), right.scale); java.math.BigDecimal output = numerator.remainder(denominator); - output.setScale(result.scale, java.math.BigDecimal.ROUND_DOWN); + output.setScale(result.scale, java.math.BigDecimal.ROUND_HALF_UP); result.value = output.unscaledValue().${type.storage}Value(); }
