浮點算術陷阱:如何克服它們
基於十進制的浮點算術,常用於Python 等程式語言,可以由於其近似性質,會引入細微的錯誤。了解這些錯誤對於準確計算至關重要。
問題
考慮以下使用浮點加法估計平方根的Python 函數:
<code class="python">def sqrt(num): root = 0.0 while root * root < num: root += 0.01 return root
然而,這個函數會產生不精確的結果:
<code class="python">>>> sqrt(4) 2.0000000000000013 >>> sqrt(9) 3.00999999999998</code>
浮點問題
問題在於Python的浮點數值不是十進制數的精確表示。相反,它們使用二進位表示,這在處理無法以二進位形式精確表示的數字時可能會導致不準確。
在範例函數中,加上 0.01 並不等於加 1/100,因為這個近似表示。實際增加值略大於 1/100,導致略微高估。
克服浮點錯誤
要避免這些錯誤,請考慮以下策略:
<code class="python">from decimal import Decimal as D def sqrt(num): root = D(0) while root * root < num: root += D("0.01") return root</code>
以上是如何克服浮點運算中的陷阱以實現精確計算?的詳細內容。更多資訊請關注PHP中文網其他相關文章!