From 18ba8507bd56218852e86f7abf8eb90b37493d01 Mon Sep 17 00:00:00 2001 From: cygao Date: Fri, 7 Jan 2022 14:12:52 +0800 Subject: [PATCH] fix bug Calculator.conversion EmptyStackException #1984 bug --- .../src/main/java/cn/hutool/core/math/Calculator.java | 2 +- .../test/java/cn/hutool/core/math/CalculatorTest.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) 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 e6963c8cf7..a2562f6d08 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 @@ -191,7 +191,7 @@ private static String transform(String expression) { } } } - if (arr[0] == '~' || (arr.length > 1 && arr[1] == '(')) { + if (arr[0] == '~' && (arr.length > 1 && arr[1] == '(')) { arr[0] = '-'; return "0" + new String(arr); } else { 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 7c67abdbeb..187eb2f38a 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 @@ -31,10 +31,15 @@ public void conversationTest4(){ } @Test - @Ignore public void conversationTest5(){ // https://github.com/dromara/hutool/issues/1984 final double conversion = Calculator.conversion("((1/1) / (1/1) -1) * 100"); - Assert.assertEquals((88D * 66 / 23) % 26, conversion, 2); + Assert.assertEquals(0, conversion, 2); + } + + @Test + public void conversationTest6() { + final double conversion = Calculator.conversion("-((2.12-2) * 100)"); + Assert.assertEquals(-1D * (2.12 - 2) * 100, conversion, 2); } }