浮點精度:為什麼 0.5 是精確的,但 0.1 不是
浮點運算雖然對許多計算都很有效,但在精確表示所有十進制數字方面面臨著固有的局限性。 本文探討了為什麼 0.5 享有精確表示法而 0.1 則不然。
理解 0.1 的表示
IEEE 754 標準規定了浮點數的儲存方式。 讓我們來看看 0.1 的表示:
將尾數乘以 2-4 大約得出 0.100000001490116119384765625。 這是 0.1 的近似值,但不完全匹配。 二進位表示法的固有限制阻礙了十進位 0.1 的完美轉換。
0.5的精確表示
相較之下,0.5 有一個簡單的表示:
這表示 1 * 2-1 = 0.5,完美的表示。
結論:二元精確度的極限
差別在於二進位系統能夠準確表示某些十進位小數。 0.5 (1/2) 是 2 的冪,因此很容易用二進位表示,但 0.1 (1/10) 則不然。 當以浮點格式儲存 0.1 時,這會導致輕微的捨入誤差,從而導致觀察到的近似值。 在處理浮點數和精確度敏感的應用程式時,程式設計師必須注意這種固有的限制。
以上是為什麼 0.1 在浮點運算中不能精確表示,而 0.5 卻可以?的詳細內容。更多資訊請關注PHP中文網其他相關文章!