@Override
    public float floatValue() {
        // The computation uses double value in order to preserve
        // as much of the precision of the source numerator and denominator
        // as possible. Note that the expression
        // return (float)numerator/(float) denominator
        // could lose precision since a Java float only carries 24 bits
        // of precision while an integer carries 32.
        return (float) doubleValue();
    }
A private constructor for methods such as negate() that create instances of this class using the content of the current instance.

@param numerator    a valid numerator
@param divisor      a valid denominator
@param unsignedType indicates how numerator and divisor values are to be interpreted.
src/main/java/org/apache/commons/imaging/common/RationalNumber.java