Maths error
Dan Bishop
danb_83 at yahoo.com
Tue Jan 9 01:19:05 CET 2007
On Jan 8, 3:30 pm, Rory Campbell-Lange <r... at campbell-lange.net> wrote:
> >>> (1.0/10.0) + (2.0/10.0) + (3.0/10.0)
> 0.60000000000000009
> >>> 6.0/10.0
> 0.59999999999999998
>
> Is using the decimal module the best way around this? (I'm expecting the first
> sum to match the second).
Probably not. Decimal arithmetic is NOT a cure-all for floating-point
arithmetic errors.
>>> Decimal(1) / Decimal(3) * Decimal(3)
Decimal("0.9999999999999999999999999999")
>>> Decimal(2).sqrt() ** 2
Decimal("1.999999999999999999999999999")
> It seem anachronistic that decimal takes strings as
> input, though.
How else would you distinguish Decimal('0.1') from
Decimal('0.1000000000000000055511151231257827021181583404541015625')?
More information about the Python-list
mailing list