diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityDataAdapter.java b/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityDataAdapter.java index e2d691f32b..1c516d6714 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityDataAdapter.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/query/EntityDataAdapter.java @@ -92,8 +92,9 @@ public class EntityDataAdapter { } try { double dblVal = Double.parseDouble(strVal); - if (!Double.isInfinite(dblVal)) { - return Double.toString(dblVal); + String doubleAsString = Double.toString(dblVal); + if (!Double.isInfinite(dblVal) && isSimpleDouble(doubleAsString)) { + return doubleAsString; } } catch (NumberFormatException ignored) { } @@ -104,4 +105,9 @@ public class EntityDataAdapter { } } + private static boolean isSimpleDouble(String valueAsString) { + return valueAsString.contains(".") && !valueAsString.contains("E") && !valueAsString.contains("e"); + } + + } diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/query/EntityDataAdapterTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/query/EntityDataAdapterTest.java index 6d052db1d1..7da5e03210 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/query/EntityDataAdapterTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/query/EntityDataAdapterTest.java @@ -25,6 +25,7 @@ public class EntityDataAdapterTest { public void testConvertValue() { assertThat(EntityDataAdapter.convertValue("500")).isEqualTo("500"); assertThat(EntityDataAdapter.convertValue("500D")).isEqualTo("500D"); //do not convert to Double !!! - assertThat(EntityDataAdapter.convertValue("0101010521130565")).isEqualTo("0101010521130565"); + assertThat(EntityDataAdapter.convertValue("0101010521130565")).isEqualTo("0101010521130565"); //do not convert to Double !!! + assertThat(EntityDataAdapter.convertValue("89010303310033979663")).isEqualTo("89010303310033979663"); //do not convert to Double !!! } }