From 728957baa3718121d434bb82cd4a343cf795bbc6 Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 9 Mar 2023 20:48:37 +0800 Subject: [PATCH] fix code --- .../src/main/java/cn/hutool/core/math/Calculator.java | 5 ++++- .../src/test/java/cn/hutool/core/math/CalculatorTest.java | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/math/Calculator.java b/hutool-core/src/main/java/cn/hutool/core/math/Calculator.java index bf54ed668..3657c72d6 100644 --- a/hutool-core/src/main/java/cn/hutool/core/math/Calculator.java +++ b/hutool-core/src/main/java/cn/hutool/core/math/Calculator.java @@ -56,7 +56,10 @@ public class Calculator { resultStack.push(tempResult.toString()); } } - return Double.parseDouble(resultStack.pop()); + + // 当结果集中有多个数字时,可能是省略*,类似(1+2)3 + return NumberUtil.mul(resultStack.toArray(new String[0])).doubleValue(); + //return Double.parseDouble(resultStack.pop()); } /** diff --git a/hutool-core/src/test/java/cn/hutool/core/math/CalculatorTest.java b/hutool-core/src/test/java/cn/hutool/core/math/CalculatorTest.java index 58068831e..9ad352fc9 100644 --- a/hutool-core/src/test/java/cn/hutool/core/math/CalculatorTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/math/CalculatorTest.java @@ -48,4 +48,12 @@ public class CalculatorTest { final double conversion = Calculator.conversion("((-2395+0) * 0.3+140.24+35+90)/30"); Assert.assertEquals(-15.11D, conversion, 0.01); } + + @Test + public void issue2964Test() { + // 忽略数字之间的运算符,按照乘法对待。 + // https://github.com/dromara/hutool/issues/2964 + final double calcValue = Calculator.conversion("(11+2)12"); + Assert.assertEquals(156D, calcValue, 0.001); + } }