下面是一个例子:

>>> "%.2f" % 0.355
'0.35'
>>> "%.2f" % (float('0.00355') *100)
'0.36'

为什么他们会给出不同的结果?

最佳答案

这不是格式错误。这只是浮点运算。查看格式命令下面的值:

In [18]: float('0.00355')
Out[18]: 0.0035500000000000002

In [19]: float('0.00355')*100
Out[19]: 0.35500000000000004

In [20]: 0.355
Out[20]: 0.35499999999999998

这两个表达式创建不同的值。
我不知道它在2.4中是否可用,但您可以使用十进制模块来实现:
>>> import decimal
>>> "%.2f" % (decimal.Decimal('0.00355')*100)
'0.35'

十进制模块将浮点数视为字符串以保持任意精度。

08-20 00:17