python2.4.3:格式错误?

这是一个例子:
>>> "%.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'
decimal模块将浮点数视为字符串以保持任意精度。     
因为,与所有浮点“不准确”问题一样,并非每个实数都可以用有限数量的比特来表示。 即使我们要坚持并拥有65536位浮点格式,0到1之间的数字仍然是,......好吧,无限:-) 几乎可以肯定的是,第一个略低于0.355(比方说,0.3549999999999),而第二个略高于(例如,0.3550000001)。 请参阅此处以获取有关此主题的更多信息。 Harald Schmidt出色的在线转换器是一个很好的工具,可以看到浮点数是如何工作的。这非常方便,我实际上也实现了自己的C#,能够处理IEEE754单精度和双精度。     
具有浮点数的算术通常是不准确的。 http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems     

要回复问题请先登录注册