减去整数python怪异的结果

时间:2013-10-05 23:15:42

标签: python

基本上我正在做的是使用urllib从网站下载一些日期。这个数字出现在我认为的Byte形式中。所以我通过执行以下操作将其更改为整数。这似乎工作正常。

real_value = (int(real_value) / 100)

然后我创建另一个变量,它应该等于两个值之间的差异。

add_to_value = real_value - last_real_value
print(add_to_value)

奇怪的是,这有时会起作用,有时我会在结尾处得到很多额外数字的结果,或者会说“9.999999999999996e-05”。

所以我真的很困惑。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

浮点数can't represent most numbers exactly。即使有一个非常简单的例子:

>>> 0.1 + 0.1
0.20000000000000001

你可以看到它不准确。如果你使用浮点数,这只是你必须要处理的事情。或者,您可以使用Python's decimal module

>>> from decimal import Decimal
>>> Decimal('0.1') + Decimal('0.1')
Decimal('0.2')

即使decimal也不能完全代表每个数字,但在处理大量基数为10的操作时,它应该会给你更合理的结果。

答案 1 :(得分:0)

阅读issues with floating points in python

假设您正在使用python3:您可能希望对类python 2'整数除法'行为使用双/,其中结果将被舍入。

real_value = (int(real_value) // 100)

答案 2 :(得分:0)

所需的值是正常的,应该是正确的。

这是因为您使用的是浮点运算。您始终可以通过设置用于表示的位数来限制结果的精度。

请参阅:http://en.wikipedia.org/wiki/Floating_point

相关问题