2024-04-24 23:33:42 发布
网友
基本上,我所做的就是用urllib从一个网站下载一些日期。我认为这个数字是字节形式。因此,我通过执行以下操作将其更改为整数。这似乎很管用。在
real_value = (int(real_value) / 100)
然后我创建另一个变量,它应该等于两个值之间的差。在
奇怪的是,这有时有效,有时我得到的结果是后面有很多额外的数字,或者它会说“9.999999999999 6E-05”。在
所以我真的很困惑。有什么想法吗?在
阅读issues with floating points in python
假设您正在使用python3:您可能希望对经典python2的“整数除法”行为使用一个双/,其中结果会四舍五入。在
/
real_value = (int(real_value) // 100)
weired值正常,应该是正确的。在
这是因为您使用的是浮点运算。您可以通过设置用于表示的位数来限制结果的精度。在
参考:http://en.wikipedia.org/wiki/Floating_point
浮点数can't represent most numbers exactly。即使有一个非常简单的例子:
>>> 0.1 + 0.1 0.20000000000000001
你可以看出这并不准确。如果你使用浮点数,这只是你必须处理的问题。或者,您可以使用Python's ^{} module:
即使decimal也不能精确地表示每一个数字,但是在处理大量以10为基数的运算时,它应该会给您提供更合理的结果。在
decimal
阅读issues with floating points in python
假设您正在使用python3:您可能希望对经典python2的“整数除法”行为使用一个双
/
,其中结果会四舍五入。在weired值正常,应该是正确的。在
这是因为您使用的是浮点运算。您可以通过设置用于表示的位数来限制结果的精度。在
参考:http://en.wikipedia.org/wiki/Floating_point
浮点数can't represent most numbers exactly。即使有一个非常简单的例子:
你可以看出这并不准确。如果你使用浮点数,这只是你必须处理的问题。或者,您可以使用Python's ^{} module :
^{pr2}$即使
decimal
也不能精确地表示每一个数字,但是在处理大量以10为基数的运算时,它应该会给您提供更合理的结果。在相关问题 更多 >
编程相关推荐