關於 Pages、Numbers 及 Keynote 運算準確度的提升

更新 Pages、Numbers 及 Keynote 後,你可能會留意到文件的運算結果有細微變化。這是由於最新版本 iWork 中所包含的運算引擎更新,能夠產生比以往更加準確的結果。

雖然大部分公式的結果不會有明顯差異,但運算結果為極細數值或使用極細數字的運算,則可能會得出更加準確的答案。

範例 1

舉例來說,在舊版本的 Numbers、Pages 及 Keynote 中,= 10.0 - 9.8 所得的值為 0.199999999999999

你需要更改輸入格顯示的小數點位數 (介乎 1 至 14 個小數位) 後,系統才會顯示預期的答案,亦即 0.2。不過,增加輸入格顯示的小數點位數卻會得出 0.199999999999999000000000000000

這是二進制內部儲存十進位數的方式所致。以二進制表示十進位數會得出非常細微的差異。Pages、Numbers 及 Keynote 一向採用精密技術以免這些差異在運算中不斷累積,但當精細度增加時,這些差異就會變得明顯。

新的運算引擎在整個運算過程中使用十進位數,大幅改善舊版本的不足之處。

現在,同一算式 = 10.0 - 9.8 所得出的結果是 0.2。如果增加顯示的小數點位數,則會得出 0.2000000000000000000000000000000

範例 2

在舊版 Numbers 中,公式 ROUND(8.415,2) 的結果是 8.41。這亦是二進制內部儲存數值的方式所致。

新的運算引擎計算 ROUND(8.415,2) 則會得出 8.42

「二進制十進碼」與「十進制浮點」編碼的比較

大多數電腦會將數字儲存為一系列的「0」和「1」,亦即二進數值。稱為「二進制十進碼」(BCD) 的編碼方式會將分數轉換為二進數。當使用 BCD 為數字編碼時,部分數值未必完全準確。舉例來說,0.2 的二進制形式為 0.001100110011… (不斷重覆)。由於 BCD 編碼必須將數值縮短,導致已儲存的數值會稍為改變。即使 BCD 所導致的差異非常細,但某些類型的運算鏈會令這些差異變得更加明顯。

最新版本的 Pages、Numbers 及 Keynote 使用 128 位元的「十進制浮點」(DFP) 編碼方式。這是一個更加準確的十進制分數編碼方式,可以避免 BCD 編碼的典型進位錯誤。此外,更新後的運算引擎直接使用 DFP 編碼的數字,讓系統能夠更準確地儲存表格輸入格中的數值並計算出公式的結果。

雖然很多公式的結果不會有明顯差異,但運算結果為極細數值或使用極細數字的運算,則可能會得出更加準確的答案。

發佈日期: