Python Decimal ne permet pas d'être construit à partir de float ; il s'attend à ce que vous convertissiez d'abord le float en une chaîne de caractères.
C'est très gênant car les formateurs de chaînes standard pour les flottants exigent que vous indiquiez le nombre de décimales plutôt que le nombre de chiffres significatifs. Ainsi, si vous avez un nombre qui peut avoir jusqu'à 15 décimales, vous devez le formater comme suit Decimal("%.15f" % my_float)
qui vous donnera des déchets à la 15ème décimale si vous avez également des chiffres significatifs avant la décimale ( Decimal("%.15f" % 100000.3) == Decimal('100000.300000000002910')
).
Quelqu'un peut-il suggérer une bonne façon de convertir un nombre flottant en une valeur décimale conservant la valeur saisie par l'utilisateur, en limitant éventuellement le nombre de chiffres significatifs pouvant être pris en charge ?