Python float to Decimal conversion
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 Decimal
Decimal(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.
Python float to Decimal conversion
I suggest this
>>> a = 2.111111
>>> a
2.1111110000000002
>>> str(a)
2.111111
>>> decimal.Decimal(str(a))
Decimal(2.111111)