雙精確度:探索十進位表示精確度
雙精確度是程式設計中常用的資料類型,提供約15 位元小數的聲稱精確度地方。然而,當處理以重複小數表示的值時,例如 1.0/7.0,就會出現異常。
為什麼有 17 位小數?
雙精度數內部有 53 位有效位,轉換為大約 15.95 個十進制數字。雖然理論上這應該會導致 16 位小數的表示,但實作會向下捨去到 15 位(由 DBL_DIG 表示)。
為了說明這一點,nextafter() 函數可以顯示與給定值相鄰的最接近的可表示數字。當應用於 1.0/7.0 (0.14285714285714285) 時,我們觀察到 17 個顯示的小數位。最後一位數字的變化表示表示的實際精度。
精確度與機會
在 1.0/7.0 的情況下,最後顯示的數字與數學值(5)。然而,對於其他重複小數(例如 1.0/3.0),最後一位數字可能不會對齊,這顯示了精確小數表示的限制。
以上是為什麼雙精確度對某些重複小數顯示 17 位小數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!