Python float to Decimal conversion Python float to Decimal conversion python python

Python float to Decimal conversion


Python <2.7

"%.15g" % f

Or in Python 3.0:

format(f, ".15g")

Python 2.7+, 3.2+

Just pass the float to Decimal constructor directly, like this:

from decimal import DecimalDecimal(f)


You said in your question:

Can someone suggest a good way to convert from float to Decimal preserving value as the user has entered

But every time the user enters a value, it is entered as a string, not as a float. You are converting it to a float somewhere. Convert it to a Decimal directly instead and no precision will be lost.


I suggest this

>>> a = 2.111111>>> a2.1111110000000002>>> str(a)'2.111111'>>> decimal.Decimal(str(a))Decimal('2.111111')