基本上我正在做的是使用urllib从网站下载一些日期。这个数字出现在我认为的Byte形式中。所以我通过执行以下操作将其更改为整数。这似乎工作正常。
real_value = (int(real_value) / 100)
然后我创建另一个变量,它应该等于两个值之间的差异。
add_to_value = real_value - last_real_value
print(add_to_value)
奇怪的是,这有时会起作用,有时我会在结尾处得到很多额外数字的结果,或者会说“9.999999999999996e-05”。
所以我真的很困惑。有什么想法吗?
答案 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)
所需的值是正常的,应该是正确的。
这是因为您使用的是浮点运算。您始终可以通过设置用于表示的位数来限制结果的精度。