From 34e4efcc3c4a132c0f14efe03b0267d40c00df93 Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 9 Jan 2020 10:23:35 +0800 Subject: [PATCH] fix mul --- CHANGELOG.md | 2 ++ .../src/main/java/cn/hutool/core/util/NumberUtil.java | 4 +--- .../src/test/java/cn/hutool/core/util/NumberUtilTest.java | 7 +++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64fde0d48..862a73656 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,8 +12,10 @@ * 【core 】 增加Alias注解 * 【core 】 修正NumberChineseFormatter和NumberWordFormatter(类名拼写错误) * 【all 】 修正equals,避免可能存在的空指针问题(pr#692@Github) +* 【core 】 提供一个自带默认值的Map(pr#87@Gitee) ### Bug修复 +* 【core 】 修复NumberUtil.mul中null的结果错误问题(issue#I17Y4J@Gitee) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java index 3426d1393..cd0ab0222 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java @@ -410,9 +410,7 @@ public class NumberUtil { BigDecimal result = new BigDecimal(null == value ? "0" : value.toString()); for (int i = 1; i < values.length; i++) { value = values[i]; - if (null != value) { - result = result.multiply(new BigDecimal(value.toString())); - } + result = result.multiply(new BigDecimal(null == value ? "0" : value.toString())); } return result; } diff --git a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java index 75b63e254..14060cc47 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/NumberUtilTest.java @@ -3,6 +3,7 @@ package cn.hutool.core.util; import java.math.BigDecimal; import java.math.RoundingMode; +import cn.hutool.core.lang.Console; import org.junit.Assert; import org.junit.Test; @@ -246,4 +247,10 @@ public class NumberUtilTest { factorial = NumberUtil.factorial(5, 1); Assert.assertEquals(120, factorial); } + + @Test + public void mulTest(){ + final BigDecimal mul = NumberUtil.mul(new BigDecimal("10"), null); + Assert.assertEquals(BigDecimal.ZERO, mul); + } }