1

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

real_value = (int(real_value) / 100)

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

add_to_value = real_value - last_real_value
print(add_to_value)

奇怪的是,这有时有效,有时我得到的结果最后有很多额外的数字,或者它会说“9.999999999999996e-05”。

所以我真的很困惑。有任何想法吗?

4

3 回答 3

2

浮点数不能准确地表示大多数数字。即使是一个非常简单的例子:

>>> 0.1 + 0.1
0.20000000000000001

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

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

即使decimal不能准确地表示每个数字,但在处理大量以 10 为基数的操作时,它应该会给您更合理的结果。

于 2013-10-05T23:21:04.197 回答
0

阅读python中的浮点问题

假设您正在使用 python3:您可能希望/对经典的 python2 的“整数除法”行为使用双精度数,结果会四舍五入。

real_value = (int(real_value) // 100)
于 2013-10-05T23:24:30.460 回答
-1

奇怪的值是正常的,应该是正确的。

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

参考:http ://en.wikipedia.org/wiki/Floating_point

于 2013-10-05T23:33:21.827 回答