Merge pull request #12437 from thingsboard/fix_bug/tbel/isDEcimalWithE
[TBEL] Fix parsing double with scientific notation
This commit is contained in:
commit
3fb92f027b
@ -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) {
|
||||
|
||||
@ -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…
x
Reference in New Issue
Block a user