From b18b25456d230ea0a03145afe5e4c7a4a7c81bca Mon Sep 17 00:00:00 2001 From: liujiabao Date: Thu, 5 Sep 2024 13:39:37 +0800 Subject: [PATCH] =?UTF-8?q?fix-=E5=85=BC=E5=AE=B9NumberUtil.add=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E4=BC=A0=E5=85=A5=E6=95=B4=E5=9E=8B=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E8=BD=AC=E6=8D=A2=E7=9A=84=E7=B2=BE=E5=BA=A6?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/util/NumberUtil.java | 32 +++++++++++++++++++ .../cn/hutool/core/util/NumberUtilTest.java | 8 +++++ 2 files changed, 40 insertions(+) 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 8c9c1cd02..cc0ea187d 100755 --- a/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/NumberUtil.java @@ -97,6 +97,38 @@ public class NumberUtil { return add(Double.toString(v1), Double.toString(v2)).doubleValue(); } + /** + * 提供精确的加法运算 + * + * @param v1 被加数 + * @param v2 加数 + * @return 和 + */ + public static double add(long v1, double v2) { + return add(Long.toString(v1), Double.toString(v2)).doubleValue(); + } + + /** + * 提供精确的加法运算 + * + * @param v1 被加数 + * @param v2 加数 + * @return 和 + */ + public static double add(double v1, long v2) { + return add(Double.toString(v1), Long.toString(v2)).doubleValue(); + } + + /** + * 提供精确的加法运算 + * @param v1 被加数 + * @param v2 加数 + * @return 和 + */ + public static double add(long v1, long v2) { + return add(Long.toString(v1), Long.toString(v2)).doubleValue(); + } + /** * 提供精确的加法运算 * 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 848799bf7..08c27f841 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 @@ -665,4 +665,12 @@ public class NumberUtilTest { final Number number = NumberUtil.parseNumber("12,234,456"); assertEquals(new BigDecimal(12234456), number); } + + @Test + public void addIntAndDoubleTest() { + int v1 = 91007279; + double v2 = 0.3545; + final double result = NumberUtil.add(v1, v2); + assertEquals(91007279.3545, result, 0); + } }