<p>我认为威尔1给出的答案不正确。<br/>
让我解释一下。在</p>
<p>以下表达式:<br/>
<code>tlf.z >= tlb.z - EPSILON</code><br/>
相当于:<br/>
<code>(tlf.z > tlb.z - EPSILON) or (tlf.z == tlb.z - EPSILON)</code></p>
<p>如果<code>tlf.z > tlb.z</code>为真,即使差小于EPSILON,那么{<cd4>}也将为真。不管EPSILON值多少。正确的形式是:<br/>
<code>tlf.z > tlb.z + EPSILON</code><br/>
至于第二个表达式<code>tlf.z == tlb.z - EPSILON</code>,只有当<code>tlf.z</code>和{<cd8>}完全不同于{<cd9>}时,它才会被计算为true,这不是我们想要的。相反,我们希望它们之间的差异小于<code>EPSILON</code>:<br/>
<code>abs(tlf.z - tlb.z) <= EPSILON</code></p>
<p>最后,<code>tlf.z >= tlb.z - EPSILON</code>应写成:<br/>
<code>(tlf.z > tlb.z + EPSILON) || (abs(tlf.z - tlb.z) <= EPSILON)</code></p>
<p><strong>更新</strong>:<br/>
我在看一些代码,突然发现<code>(tlf.z > tlb.z + EPSILON) || (abs(tlf.z - tlb.z) <= EPSILON)</code>实际上相当于<code>tlf.z >= tlb.z - EPSILON</code>。<br/>
当我们寻找相似性时,<code>abs(tlf.z - tlb.z) <= EPSILON</code>,我们希望<code>tlb.z</code>位于以下灰色区域:<br/>
<img src="https://dl.dropbox.com/u/8799475/images/sim_2.png" width="400" height="100"/><br/>
当我们寻找<code>tlf.z > tlb.z + EPSILON</code>时:<br/>
<img src="https://dl.dropbox.com/u/8799475/images/greater.png" width="400" height="100"/><br/>
因此,我们确实在寻找:<br/>
<img src="https://dl.dropbox.com/u/8799475/images/result.png" width="400" height="100"/><br/>
与<code>tlf.z + EPSILON >= tlb.z</code>(相当于<code>tlf.z >= tlb.z - EPSILON</code>)相同。<br/>
在这种情况下,willm1实际上是对的。对不起:)</p>