Mark Dickinson <> added the comment:

This isn't a bug. When you do `Decimal(9.95)`, you're converting the binary 
floating-point number `9.95` to a `Decimal` instance. The conversion is 
performed exactly, with no change in the value. But the *input* to the 
conversion, the float `9.95` can't be stored exactly in IEEE 754 binary64 
format, so what you end up with is something very slightly smaller.

>>> from decimal import Decimal
>>> Decimal(9.95)

That's the reason that it rounds down.

Good practice is to create your Decimal instances from strings rather than 

>>> Decimal(9.95).quantize(Decimal('1.1'),ROUND_HALF_UP)
>>> Decimal('9.95').quantize(Decimal('1.1'),ROUND_HALF_UP)

nosy: +mark.dickinson
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed

Python tracker <>
Python-bugs-list mailing list

Reply via email to