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 a674fd4df..33ea4bf79 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 @@ -126,7 +126,7 @@ public class NumberUtil { } Number value = values[0]; - BigDecimal result = new BigDecimal(null == value ? "0" : value.toString()); + BigDecimal result = null == value ? BigDecimal.ZERO : new BigDecimal(value.toString()); for (int i = 1; i < values.length; i++) { value = values[i]; if (null != value) { @@ -150,7 +150,7 @@ public class NumberUtil { } String value = values[0]; - BigDecimal result = new BigDecimal(null == value ? "0" : value); + BigDecimal result = null == value ? BigDecimal.ZERO : new BigDecimal(value); for (int i = 1; i < values.length; i++) { value = values[i]; if (null != value) { @@ -266,7 +266,7 @@ public class NumberUtil { } Number value = values[0]; - BigDecimal result = new BigDecimal(null == value ? "0" : value.toString()); + BigDecimal result = null == value ? BigDecimal.ZERO : new BigDecimal(value.toString()); for (int i = 1; i < values.length; i++) { value = values[i]; if (null != value) { @@ -290,7 +290,7 @@ public class NumberUtil { } String value = values[0]; - BigDecimal result = new BigDecimal(null == value ? "0" : value); + BigDecimal result = null == value ? BigDecimal.ZERO : new BigDecimal(value); for (int i = 1; i < values.length; i++) { value = values[i]; if (null != value) { @@ -402,15 +402,15 @@ public class NumberUtil { * @since 4.0.0 */ public static BigDecimal mul(Number... values) { - if (ArrayUtil.isEmpty(values)) { + if (ArrayUtil.isEmpty(values) || ArrayUtil.hasNull(values)) { return BigDecimal.ZERO; } Number value = values[0]; - BigDecimal result = new BigDecimal(null == value ? "0" : value.toString()); + BigDecimal result = new BigDecimal(value.toString()); for (int i = 1; i < values.length; i++) { value = values[i]; - result = result.multiply(new BigDecimal(null == value ? "0" : value.toString())); + result = result.multiply(new BigDecimal(value.toString())); } return result; } @@ -436,18 +436,15 @@ public class NumberUtil { * @since 4.0.0 */ public static BigDecimal mul(String... values) { - if (ArrayUtil.isEmpty(values)) { + if (ArrayUtil.isEmpty(values) || ArrayUtil.hasNull(values)) { return BigDecimal.ZERO; } - String value = values[0]; - BigDecimal result = new BigDecimal(null == value ? "0" : value); + BigDecimal result =new BigDecimal(values[0]); for (int i = 1; i < values.length; i++) { - value = values[i]; - if (null != value) { - result = result.multiply(new BigDecimal(value)); - } + result = result.multiply(new BigDecimal(values[i])); } + return result; } @@ -460,17 +457,13 @@ public class NumberUtil { * @since 4.0.0 */ public static BigDecimal mul(BigDecimal... values) { - if (ArrayUtil.isEmpty(values)) { + if (ArrayUtil.isEmpty(values) || ArrayUtil.hasNull(values)) { return BigDecimal.ZERO; } - BigDecimal value = values[0]; - BigDecimal result = null == value ? BigDecimal.ZERO : value; + BigDecimal result = values[0]; for (int i = 1; i < values.length; i++) { - value = values[i]; - if (null != value) { - result = result.multiply(value); - } + result = result.multiply(values[i]); } return result; }