You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2019/08/08 17:30:29 UTC

[commons-numbers] 06/18: NUMBERS-120: Repair BigFraction.floatValue()

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 fd1292e588bfbd0b0b63ae56cf316faf2df00537
Author: Schamschi <he...@gmx.at>
AuthorDate: Wed Jun 26 03:31:01 2019 +0200

    NUMBERS-120: Repair BigFraction.floatValue()
---
 .../org/apache/commons/numbers/fraction/BigFraction.java  | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
index 6de8f37..3a1a63d 100644
--- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
+++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
@@ -887,20 +887,7 @@ public class BigFraction extends Number implements Comparable<BigFraction>, Seri
      */
     @Override
     public float floatValue() {
-        float floatNum = numerator.floatValue();
-        float floatDen = denominator.floatValue();
-        float result = floatNum / floatDen;
-        if (Float.isInfinite(floatNum) ||
-            Float.isInfinite(floatDen) ||
-            Float.isNaN(result)) {
-            // Numerator and/or denominator must be out of range:
-            // Calculate how far to shift them to put them in range.
-            int shift = Math.max(numerator.bitLength(),
-                                 denominator.bitLength()) - Math.getExponent(Float.MAX_VALUE);
-            result = numerator.shiftRight(shift).floatValue() /
-                denominator.shiftRight(shift).floatValue();
-        }
-        return result;
+        return Float.intBitsToFloat((int) toFloatingPointBits(8, 23));
     }
 
     /**