擅长:python、mysql、java
<p>从算术的角度来看,<code>x < x - 1</code>的断言是正确的。然而,这不是计算机“思考”的方式。浮点数精度有限。即使这样也不成立:</p>
<pre><code>print(1e90 < 1e90 - 1) # False
print(1e90 == 1e90 - 1) # True
</code></pre>
<p>这是因为在使用双精度时<code>1e90 - 1</code>被舍入为<code>1e90</code>。你知道吗</p>
<p>使用<em>无穷大</em>值时也会发生类似的情况。在比较之前,评估表达<code>inf - 1</code>。
-<code>inf - 1</code>的计算结果是什么?对<a href="https://en.wikipedia.org/wiki/IEEE_754-1985#Representation_of_non-numbers" rel="nofollow noreferrer">represent positive infinity</a>只有一个值,因此<code>inf - 1</code>的计算结果为<code>inf</code>。你知道吗</p>
<p>因此,当你比较<code>inf < inf - 1</code>时,你实际上比较了<code>inf < inf</code>,这就是你得到<code>False</code>的原因。你知道吗</p>