This is an automated email from the ASF dual-hosted git repository. erans pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-numbers.git
commit 28fa56dcb3d1f41bdc84809cd00e710d43993a01 Author: Schamschi <[email protected]> AuthorDate: Mon Jun 24 23:08:56 2019 +0200 NUMBERS-120: Add mad corner case to unit tests to enforce maximum precision in doubleValue() --- .../commons/numbers/fraction/BigFractionTest.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java index 7c4afdf..e20113e 100644 --- a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java +++ b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java @@ -171,11 +171,21 @@ public class BigFractionTest { @Test public void testDoubleValue() { - BigFraction first = BigFraction.of(1, 2); - BigFraction second = BigFraction.of(1, 3); + { + BigFraction first = BigFraction.of(1, 2); + BigFraction second = BigFraction.of(1, 3); + + Assertions.assertEquals(0.5, first.doubleValue(), 0.0); + Assertions.assertEquals(1.0 / 3.0, second.doubleValue(), 0.0); + } - Assertions.assertEquals(0.5, first.doubleValue(), 0.0); - Assertions.assertEquals(1.0 / 3.0, second.doubleValue(), 0.0); + //NUMBERS-120 + { + BigFraction f = BigFraction.of( + BigInteger.ONE.shiftLeft(54), + BigInteger.ONE.shiftLeft(53).add(BigInteger.ONE)); + Assertions.assertEquals(2d - 0x1P-52, f.doubleValue()); + } } @Test
