Python Decimal 不支持从 float 构造;它希望您必须先将浮点数转换为字符串。
这是非常不方便的,因为浮点的标准字符串格式化程序要求您指定小数位数而不是有效位数。因此,如果您有一个可能有多达 15 位小数的数字,则需要格式化为,如果您在小数点 ( )Decimal("%.15f" % my_float)
之前还有任何有效数字,这将在小数点后 15 位给您带来垃圾。Decimal("%.15f" % 100000.3) == Decimal('100000.300000000002910')
有人可以建议一种在用户输入时从浮点数转换为十进制保留值的好方法,可能会限制可以支持的有效数字的数量吗?