Heinrich Bohne created NUMBERS-128:
--------------------------------------
Summary: Precision of Fraction.floatValue() can be improved
Key: NUMBERS-128
URL: https://issues.apache.org/jira/browse/NUMBERS-128
Project: Commons Numbers
Issue Type: Improvement
Components: fraction
Affects Versions: 1.0
Reporter: Heinrich Bohne
The current implementation of {{Fraction.floatValue()}} first calls
{{doubleValue()}}, which converts the fraction to a {{double}} with maximum
possible precision, and then rounds the returned {{double}} value to a
{{float}}. For the fraction 1 + 2^6^ / (2^30^ - 1) = (2^30^ - 1 + 2^6^) /
(2^30^ - 1), this yields a result of exactly 1. However, the [actual value of
the
fraction|https://www.wolframalpha.com/input/?i=(2%5E30+-+1+%2B+2%5E6)%2F(2%5E30+-+1)+to+base+2]
is closer to 1 + 2^-23^ (which is representable exactly as a {{float}}) than
it is to 1, as WolframAlpha
[confirms|https://www.wolframalpha.com/input/?i=abs((2%5E30+-+1+%2B+2%5E6)%2F(2%5E30+-+1)+-+(1+%2B+2%5E-23))+%3C+abs((2%5E30+-+1+%2B+2%5E6)%2F(2%5E30+-+1)+-+1)].
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)