我可以将任何字符串转换为浮点数而不丢失 Python 中的精度吗?

Can I convert any string to float without losing precision in Python?

我正在解析来自 API 的一些价格信息,如果我只做 price = float(price_str),我是否需要担心失去精度?

或者我是否必须使用 decimal.Decimal 来确保原始值被解析?

价格应该是小数,浮点数经常会引入舍入误差,这会让你在长运行时头疼。示例:

In [1]: 3*0.1
Out[1]: 0.30000000000000004

使用货币时使用十进制 class! 为什么?让我们看看这个虚拟示例:

float('0.2') + float('0.1')

结果:0.30000000000000004

改用十进制:

Decimal('0.2') + Decimal('0.1')

结果:Decimal('0.3')

更新:

如果你使用第三方 API 格式 json,你可以使用 Decimal 自动解析浮点数:见我的博客 post: http://www.daveoncode.com/2014/10/21/python-reading-numbers-from-json-without-loss-of-precision-using-decimal-class-for-data-processing/