7

我计算了以下内容:

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

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

我在 python 3.2 上。

4

3 回答 3

16

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

Python 文档中有一个很好的解释。

如果您需要更准确的答案,可以查看decimal模块。

于 2012-05-01T19:55:00.340 回答
2

您可以使用round()

例如:

print(round(10 - 9.2, 2))
于 2019-02-07T07:59:12.707 回答
0

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

于 2012-05-01T19:56:40.960 回答