擅长:python、mysql、java
<p>大多数人会把它命名为<code>epsilon</code>,并用<code>delta</code>表示<code>cuberoot**3 - num</code>。你知道吗</p>
<p>最后,你希望这个表达</p>
<pre><code> cuberoot = (high + low)/2
</code></pre>
<p>将为您在每次迭代中获得大约多一点的精确性。
(接近开始时,每次大约将错误位数减半。)</p>
<p>您在抱怨<a href="https://en.wikipedia.org/wiki/IEEE_754" rel="nofollow noreferrer">IEEE-754 double</a>在计算多维数据集时精度有限,而且存在差异。
53位给出了16位小数,而ε是<code>1e-14</code>。
但是一个输入<code>num</code>只有几个数字长,就会消耗掉你的边距,正如你发现的那样。你知道吗</p>
<p>对于更高精度的计算,您可能更喜欢使用<a href="https://docs.python.org/3/library/decimal.html" rel="nofollow noreferrer">Decimal</a>。
或者,查看<a href="https://en.wikipedia.org/wiki/GNU_Multiple_Precision_Arithmetic_Library" rel="nofollow noreferrer">gmp</a>库。你知道吗</p>
<p>你相信某种循环不变量成立,
数量<code>cuberoot</code>和<code>cuberoot ** 3</code>在每次迭代中都会改变。
验证起来很简单。
只需将它们赋给临时变量,并验证它们是否更改。
如果他们没有提前终止循环。
更一般而言,要检测少数限制值之间的振荡,请将以前的值放入<code>set</code>中,并在看到重复值时提前终止。你知道吗</p>