Python:浮点值加法和减法给出错误的值

时间:2014-10-16 18:46:12

标签: python-2.7

我只是在python 2.7中检查以下内容

打印0.1 + 0.2

输出: - 0.3

印刷0.1 + 0.2 - 0.3

输出: - 5.55111512313e-17

但我期待0.0 那么,如何实现这个目标呢?

1 个答案:

答案 0 :(得分:0)

这里的问题是float类型没有足够的精度来显示你想要的结果。如果你试图打印部分和0.1 + 0.2,你会看到你得到的浮点数是0.30000000000000004。

因此,5.55111512313e-17是浮点型变量与该结果最接近的近似值。如果您尝试将结果转换为int,那么:

int(0.2 + 0.1 - 0.3)

你会看到0,这是正确的整数近似值。 使用十进制类可以得到0.0浮点变量。

试试这个:

from decimal import Decimal
Decimal("0.2") + Decimal("0.1") - Decimal("0.3")

你会看到结果是十进制的(" 0.0")