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 8953e48b0..c5e2f7aed 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 @@ -716,6 +716,9 @@ public class NumberUtil { * @since 3.1.0 */ public static BigDecimal div(Number v1, Number v2, int scale, RoundingMode roundingMode) { + if(v1 instanceof BigDecimal && v2 instanceof BigDecimal){ + return div((BigDecimal)v1, (BigDecimal)v2, scale, roundingMode); + } return div(v1.toString(), v2.toString(), scale, roundingMode); } 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 137c849cd..e5ee4565e 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 @@ -87,6 +87,12 @@ public class NumberUtilTest { Assert.assertEquals(0.0, result, 0); } + @Test + public void divBigDecimalTest() { + BigDecimal result = NumberUtil.div(BigDecimal.ZERO, BigDecimal.ONE); + Assert.assertEquals(BigDecimal.ZERO, result.stripTrailingZeros()); + } + @Test public void roundTest() {