Python浮点数转换为Decimal

19 浏览
0 Comments

Python浮点数转换为Decimal

Python Decimal不支持从浮点数构造,它期望你首先将浮点数转换为字符串。

这非常不方便,因为标准的浮点数字符串格式化器要求你指定小数位数,而不是有效位数。所以,如果你有一个可能有多达15位小数的数字,你需要将其格式化为Decimal("%.15f" % my_float),这将在第15位小数处给你垃圾值,如果你在小数点前有任何有效数字(Decimal("%.15f" % 100000.3) == Decimal('100000.300000000002910'))。

有人能否提供一种好的方法,将浮点数转换为Decimal,并保留用户输入的值,也许限制可以支持的有效数字位数?

0