diff --git a/src/main/java/com/github/sidhant92/boolparser/datatype/IntegerDataType.java b/src/main/java/com/github/sidhant92/boolparser/datatype/IntegerDataType.java index 5e9f387..9dcaa8b 100644 --- a/src/main/java/com/github/sidhant92/boolparser/datatype/IntegerDataType.java +++ b/src/main/java/com/github/sidhant92/boolparser/datatype/IntegerDataType.java @@ -1,5 +1,6 @@ package com.github.sidhant92.boolparser.datatype; +import java.math.BigDecimal; import java.util.Optional; import com.github.sidhant92.boolparser.constant.DataType; @@ -22,7 +23,8 @@ public boolean isValid(final Object value) { boolean isValid = super.defaultIsValid(value); if (!isValid) { try { - Integer.parseInt(value.toString()); + BigDecimal number = new BigDecimal(value.toString()); + Integer.parseInt(number.stripTrailingZeros().toPlainString()); return true; } catch (Exception ex) { return false; @@ -46,7 +48,8 @@ public Optional getValue(Object value) { return result; } try { - return Optional.of(Integer.parseInt(value.toString())); + BigDecimal number = new BigDecimal(value.toString()); + return Optional.of(Integer.parseInt(number.stripTrailingZeros().toPlainString())); } catch (final Exception ignored) { } return Optional.empty(); diff --git a/src/main/java/com/github/sidhant92/boolparser/datatype/LongDataType.java b/src/main/java/com/github/sidhant92/boolparser/datatype/LongDataType.java index 16b5afa..d68e242 100644 --- a/src/main/java/com/github/sidhant92/boolparser/datatype/LongDataType.java +++ b/src/main/java/com/github/sidhant92/boolparser/datatype/LongDataType.java @@ -1,5 +1,6 @@ package com.github.sidhant92.boolparser.datatype; +import java.math.BigDecimal; import java.util.Optional; import com.github.sidhant92.boolparser.constant.DataType; @@ -22,7 +23,8 @@ public boolean isValid(final Object value) { boolean isValid = super.defaultIsValid(value); if (!isValid) { try { - Long.parseLong(value.toString()); + BigDecimal number = new BigDecimal(value.toString()); + Long.parseLong(number.stripTrailingZeros().toPlainString()); return true; } catch (Exception ex) { return false; @@ -46,7 +48,8 @@ public Optional getValue(Object value) { return result; } try { - return Optional.of(Long.parseLong(value.toString())); + BigDecimal number = new BigDecimal(value.toString()); + return Optional.of(Long.parseLong(number.stripTrailingZeros().toPlainString())); } catch (final Exception ignored) { } return Optional.empty();