sum accuracy

Ben Bacarisse ben.usenet at bsb.me.uk
Fri Apr 15 06:10:36 EDT 2016


Oscar Benjamin <oscar.j.benjamin at gmail.com> writes:

> On 15 April 2016 at 10:24, Robin Becker <robin at reportlab.com> wrote:
<snip>
>> yes indeed summation is hard :(
>
> Not with Fraction it isn't:
>
> from fractions import Fraction
>
> def exact_sum(nums):
>     return sum(map(Fraction, nums))
>
> This will give you the exact result with precisely zero rounding
> error. You can convert it to float at the end.

Just a word of warning for people new to numerical work: there's no
rounding error, but unless you start with Fraction objects you still
have input or conversion errors.  The uninitiated might expect

  exact_sum([0.3, 0.7])

to be 1.

-- 
Ben.



More information about the Python-list mailing list