浮點精準度:仔細觀察
圍繞浮點精確度的常見誤解(通常表示為固定的十進位數)是不準確的。 浮點數在表示形式和算術上與十進制數有根本的差異。
二進位表示和精確度
浮點數採用二進位格式,使用位元而不是十進制數字。 精度由分配給有效數(尾數)的位數決定,定義了可表示的最小值變化 - 解析度。 然而,準確度是指表示值與真實值的接近程度。
挑戰 6-9 位數字的主張
經常被引用的 MSDN 聲稱的 6-9 位精確度具有誤導性。 浮點精度不固定;表示的準確性根據數字的大小和小數結構而有很大差異。
數字大小和表示
大數字,尤其是那些容易表示為 2 的冪的數字,可以精確地表示。 相反,較小的數字在從十進制轉換為二進制的過程中可能會出現嚴重的錯誤。 例如,由於浮點表示的限制,「999999.97」可能會四捨五入為「1,000,000」。
6-9 位元經驗法則的起源
「6-9 位數字」準則源自於以下觀察:
但是,這些觀察結果並不能真實反映浮點格式的固有精確度或準確性。
總結
要準確理解浮點運算,必須承認其二進制性質並放棄固定十進制精度的概念。 實際精度和準確度很大程度上取決於所涉及的具體數字。
以上是程式設計中的浮點類型精度到底有多準確?的詳細內容。更多資訊請關注PHP中文網其他相關文章!