python中的浮点给出了错误的答案

时间:2012-05-01 19:53:55

标签: python python-3.x

我计算了以下内容:

>>> float(10.0-9.2)
0.800000000000000*7*

即使做10.0-9.2也给出了上述结果。为什么额外的7会出现在结果中?

我在python 3.2上。

3 个答案:

答案 0 :(得分:14)

浮点运算具有内置问题,因为它基于数字的二进制近似。

Python文档中有a good explanation of this

如果您需要更准确的答案,可以查看the decimal module

答案 1 :(得分:0)

这是所有平台上典型的二进制浮点运算。如果您的应用程序不能容忍在此误差范围内的舍入错误,则可以改为使用Decimal个对象。

答案 2 :(得分:0)

您可以使用round()

例如:

print(round(10 - 9.2, 2))