From abce0741a7df899d294b06930b415612aff87b85 Mon Sep 17 00:00:00 2001 From: jverson Date: Thu, 12 May 2022 10:30:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=9D=9E=E6=B5=AE=E7=82=B9=E5=9E=8B?= =?UTF-8?q?=E7=A7=91=E5=AD=A6=E8=AE=A1=E6=95=B0=E8=A7=A3=E6=9E=90=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E9=97=AE=E9=A2=98fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ql/util/express/parse/ExpressParse.java | 7 +++- .../express/bugfix/ScientificNumberTest.java | 34 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/test/java/com/ql/util/express/bugfix/ScientificNumberTest.java diff --git a/src/main/java/com/ql/util/express/parse/ExpressParse.java b/src/main/java/com/ql/util/express/parse/ExpressParse.java index 22bc8d724..daf9fa3be 100644 --- a/src/main/java/com/ql/util/express/parse/ExpressParse.java +++ b/src/main/java/com/ql/util/express/parse/ExpressParse.java @@ -172,7 +172,12 @@ public List transferWord2ExpressNode(ExpressPackage rootExpressPack tempWord = tempWord.substring(0, tempWord.length() - 1); objectValue = Long.valueOf(tempWord); } else { - long tempLong = Long.parseLong(tempWord); + long tempLong; + if (tempWord.indexOf("e") >=0 || tempWord.indexOf("E") >=0) { + tempLong = Double.valueOf(tempWord).longValue(); + } else { + tempLong = Long.parseLong(tempWord); + } if (tempLong <= Integer.MAX_VALUE && tempLong >= Integer.MIN_VALUE) { tempType = nodeTypeManager.findNodeType("CONST_INTEGER"); objectValue = (int)tempLong; diff --git a/src/test/java/com/ql/util/express/bugfix/ScientificNumberTest.java b/src/test/java/com/ql/util/express/bugfix/ScientificNumberTest.java new file mode 100644 index 000000000..587432f10 --- /dev/null +++ b/src/test/java/com/ql/util/express/bugfix/ScientificNumberTest.java @@ -0,0 +1,34 @@ +package com.ql.util.express.bugfix; + +import com.ql.util.express.DefaultContext; +import com.ql.util.express.ExpressRunner; +import com.ql.util.express.IExpressContext; +import org.junit.Test; + +import java.util.ArrayList; +import java.util.List; + +/** + * created by jiwenxing on 2022/5/12 + */ +public class ScientificNumberTest { + + static List express = new ArrayList<>(); + static { + express.add("2e2==200"); + express.add("2E2==200"); + express.add("2.0e2==200"); + express.add("2.0E2==200"); + } + + @Test + public void testFunction() throws Exception { + ExpressRunner runner = new ExpressRunner(); + IExpressContext context = new DefaultContext<>(); + for (String exp: express) { + Object result = runner.execute(exp, context, null, false, false); + System.out.println(exp + ": " + result); + assert ((Boolean)result); + } + } +} From f35a47222fd2162c666d2346fc416151308542c7 Mon Sep 17 00:00:00 2001 From: jverson Date: Thu, 7 Jul 2022 10:37:03 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=A0=B9=E6=8D=AEReview=E5=BB=BA=E8=AE=AE?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=8D=95=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ql/util/express/bugfix/ScientificNumberTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/ql/util/express/bugfix/ScientificNumberTest.java b/src/test/java/com/ql/util/express/bugfix/ScientificNumberTest.java index 587432f10..0ba1afddb 100644 --- a/src/test/java/com/ql/util/express/bugfix/ScientificNumberTest.java +++ b/src/test/java/com/ql/util/express/bugfix/ScientificNumberTest.java @@ -3,6 +3,7 @@ import com.ql.util.express.DefaultContext; import com.ql.util.express.ExpressRunner; import com.ql.util.express.IExpressContext; +import org.junit.Assert; import org.junit.Test; import java.util.ArrayList; @@ -27,8 +28,7 @@ public void testFunction() throws Exception { IExpressContext context = new DefaultContext<>(); for (String exp: express) { Object result = runner.execute(exp, context, null, false, false); - System.out.println(exp + ": " + result); - assert ((Boolean)result); + Assert.assertTrue((Boolean)result); } } }