You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ni...@apache.org on 2020/01/27 14:16:51 UTC
[kylin] 05/05: minor,
should use BigDecimal.valueOf instead of constructor to avoid
imprecision
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 <et...@163.com>
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();