我真的不知道如何写标题,但我有一个if语句和两个变量a
和b
。我希望它检查变量a
是否等于b
或者它是否变化了 0.1(这意味着它可以高于或低于 a 0.1)。我尝试的方式如下所示:
a = 1
b = 0.9
if (a == b) or (a == b + 0.1) or (a == b - 0.1):
print "it worked"
问题是这种方法似乎太长了,我想知道是否有更短的方法可以用来做到这一点。
如果您希望它发生变化,则不应检查相等性,而应检查小于或等于。喜欢:
if b-0.1 <= a <= b+0.1:
# ...
pass
或者:
if -0.1 <= a-b <= 0.1:
# ...
pass
后者会更有效一些,因为差值只计算一次。
第一个语句(a == b
)是不必要的,因为它是由上面暗示的。
此外,请注意,无论如何检查浮点的相等性通常不是一个好主意:0.1
不能完全表示0.1
所以它是0.0999....
或0.1000...1
的东西。结果,最轻微的某个公式的乘积可能会有微小的差异,这将导致检查False
。
你可以尝试使用abs()
函数
if abs(a-b) <= 0.1:
pass