Fixes: Big integer's last some digits become zero after read. Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/a4c18b38 Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/a4c18b38 Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/a4c18b38
Branch: refs/heads/master Commit: a4c18b387d6d117d7f75ce8f81ae321e9510bcbc Parents: 3982a58 Author: hling <[email protected]> Authored: Mon Aug 13 18:19:39 2018 +0800 Committer: hling <[email protected]> Committed: Mon Aug 13 18:19:39 2018 +0800 ---------------------------------------------------------------------- .../main/java/org/apache/metamodel/util/NumberComparator.java | 4 ++++ .../java/org/apache/metamodel/util/NumberComparatorTest.java | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/metamodel/blob/a4c18b38/core/src/main/java/org/apache/metamodel/util/NumberComparator.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/metamodel/util/NumberComparator.java b/core/src/main/java/org/apache/metamodel/util/NumberComparator.java index 84c1fd2..1c42083 100644 --- a/core/src/main/java/org/apache/metamodel/util/NumberComparator.java +++ b/core/src/main/java/org/apache/metamodel/util/NumberComparator.java @@ -136,6 +136,10 @@ public final class NumberComparator implements Comparator<Object> { } catch (NumberFormatException e) { } try { + return new BigInteger(stringValue); + } catch (NumberFormatException e) { + } + try { return Double.parseDouble(stringValue); } catch (NumberFormatException e) { } http://git-wip-us.apache.org/repos/asf/metamodel/blob/a4c18b38/core/src/test/java/org/apache/metamodel/util/NumberComparatorTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/metamodel/util/NumberComparatorTest.java b/core/src/test/java/org/apache/metamodel/util/NumberComparatorTest.java index e138607..c416feb 100644 --- a/core/src/test/java/org/apache/metamodel/util/NumberComparatorTest.java +++ b/core/src/test/java/org/apache/metamodel/util/NumberComparatorTest.java @@ -50,7 +50,10 @@ public class NumberComparatorTest { public void testToNumberLong() throws Exception { assertEquals(4212000000l, NumberComparator.toNumber("4212000000")); } - + @Test + public void testToNumberBigInteger() throws Exception { + assertEquals(new BigInteger("42120000000000004212"), NumberComparator.toNumber("42120000000000004212")); + } @Test public void testToNumberDouble() throws Exception { assertEquals(42.12, NumberComparator.toNumber("42.12"));
