Browse Source

fix_bug: tbel, in the isDecimal method. The mantissa format includes numbers written in exponential form

pull/12437/head
nick 1 year ago
parent
commit
3908105ac5
  1. 2
      common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbUtils.java
  2. 11
      common/script/script-api/src/test/java/org/thingsboard/script/api/tbel/TbUtilsTest.java

2
common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbUtils.java

@ -1299,7 +1299,7 @@ public class TbUtils {
if (str == null || str.isEmpty()) {
return -1;
}
return str.matches("[+-]?\\d+(\\.\\d+)?") ? DEC_RADIX : -1;
return str.matches("[+-]?\\d+(\\.\\d+)?([eE][+-]?\\d+)?") ? DEC_RADIX : -1;
}
public static int isHexadecimal(String str) {

11
common/script/script-api/src/test/java/org/thingsboard/script/api/tbel/TbUtilsTest.java

@ -442,8 +442,9 @@ public class TbUtilsTest {
@Test
public void parsDouble() {
String doubleValStr = "1729.1729";
Assertions.assertEquals(java.util.Optional.of(doubleVal).get(), TbUtils.parseDouble(doubleValStr));
String doubleValStr = "1.1428250947E8";
Assertions.assertEquals(Double.parseDouble(doubleValStr), TbUtils.parseDouble(doubleValStr));
doubleValStr = "1729.1729";
Assertions.assertEquals(0, Double.compare(doubleVal, TbUtils.parseHexToDouble(longValHex)));
Assertions.assertEquals(0, Double.compare(doubleValRev, TbUtils.parseHexToDouble(longValHex, false)));
Assertions.assertEquals(0, Double.compare(doubleVal, TbUtils.parseBigEndianHexToDouble(longValHex)));
@ -930,7 +931,13 @@ public class TbUtilsTest {
@Test
public void isDecimal_Test() {
Assertions.assertEquals(10, TbUtils.isDecimal("4567039"));
Assertions.assertEquals(10, TbUtils.isDecimal("1.1428250947E8"));
Assertions.assertEquals(10, TbUtils.isDecimal("123.45"));
Assertions.assertEquals(10, TbUtils.isDecimal("-1.23E-4"));
Assertions.assertEquals(10, TbUtils.isDecimal("1E5"));
Assertions.assertEquals(-1, TbUtils.isDecimal("C100110"));
Assertions.assertEquals(-1, TbUtils.isDecimal("abc"));
Assertions.assertEquals(-1, TbUtils.isDecimal(null));
}
@Test

Loading…
Cancel
Save