Python float to Decimal conversion
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.