This is an automated email from the ASF dual-hosted git repository. nic pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kylin.git
commit c5192c4b1b5012d5e6eabeda303ae98c9b68bcc0 Author: etherge <[email protected]> AuthorDate: Fri Jan 24 10:22:00 2020 -0500 minor, should use BigDecimal.valueOf instead of constructor to avoid imprecision --- .../src/main/java/org/apache/kylin/common/util/DecimalUtil.java | 7 ++++--- .../src/main/java/org/apache/kylin/metadata/tuple/Tuple.java | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core-common/src/main/java/org/apache/kylin/common/util/DecimalUtil.java b/core-common/src/main/java/org/apache/kylin/common/util/DecimalUtil.java index 0891960..e92cfff 100644 --- a/core-common/src/main/java/org/apache/kylin/common/util/DecimalUtil.java +++ b/core-common/src/main/java/org/apache/kylin/common/util/DecimalUtil.java @@ -32,9 +32,10 @@ public class DecimalUtil { // There are some values of "long" that cannot be represented as "double". // Not so "int". If it isn't a long, go straight to double. return number instanceof BigDecimal ? (BigDecimal) number - : number instanceof BigInteger ? new BigDecimal((BigInteger) number) - : number instanceof Long ? new BigDecimal(number.longValue()) - : new BigDecimal(number.doubleValue()); + : number instanceof Integer ? new BigDecimal((Integer) number) + : number instanceof BigInteger ? new BigDecimal((BigInteger) number) + : number instanceof Long ? new BigDecimal(number.longValue()) + : BigDecimal.valueOf(number.doubleValue()); } public static BigDecimal toBigDecimal(Object o) { diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java b/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java index 86db79b..6a0cda9 100644 --- a/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java +++ b/core-metadata/src/main/java/org/apache/kylin/metadata/tuple/Tuple.java @@ -119,7 +119,7 @@ public class Tuple implements ITuple { if (fieldValue instanceof BigDecimal) { fieldValue = normalizeDecimal((BigDecimal) fieldValue); } else if (fieldValue instanceof Number) { - fieldValue = new BigDecimal(((Number) fieldValue).doubleValue()); + fieldValue = BigDecimal.valueOf(((Number) fieldValue).doubleValue()); } } else if ("float".equals(dataType) && fieldValue instanceof BigDecimal) { fieldValue = ((BigDecimal) fieldValue).floatValue();
