跳轉到內容

實數: 錯誤

來自華夏公益教科書,開放的書籍,為開放的世界

試卷 2 - ⇑ 資料表示基礎 ⇑

← 浮點數規範化 浮點誤差 字元形式的十進位制數字 →



有效數字

[編輯 | 編輯原始碼]
  • 使用浮點數有什麼缺點?
  • 你可能會遇到什麼錯誤?

使用浮點數時,您必須平衡數字的範圍和精度。也就是說,您是想擁有一個非常大的值範圍,還是想要一個非常精確的數字,精確到小數點後很多位。這意味著您將始終權衡用多少位來表示尾數,以及用多少位來表示指數。總結如下

  • 如果您想要一個非常精確的數字,請為尾數使用更多位,為指數使用更少的位,因為這將允許更多的小數位。
  • 如果您想要一個更大的數字範圍,請為指數使用更多位,為尾數使用更少的位。

舍入誤差

[編輯 | 編輯原始碼]

當我們試圖表示某些數字時,有時我們無法在給定的空間內做到這一點,例如,試圖寫下 1/3 = 0.33333333;你明白我的意思嗎?使用浮點數時,您無法始終獲得完美的精度,有時我們會遇到錯誤。

將此方程輸入谷歌

999999999999999 - 999999999999998

瀏覽器將執行浮點計算,並給出答案 0!

因此,認識到使用浮點數可能存在舍入誤差,我們將看看可能出現的不同誤差。下面的數字想要用二進位制 23.27 表示,我們能得到的最接近的值是 23.25。

絕對誤差

[編輯 | 編輯原始碼]

這是所需值與舍入值之間的實際數字差異。



Where  means: make  positive.
Example 1:
|23.27 – 23.25| = 0.02 absolute error
Example 2:
|23.27 – 23.29| = 0.02 absolute error
練習:絕對誤差

給出以下數字的絕對誤差

試圖表示 3.333 時,您能得到的最接近的值是 3.25

答案

3.333 - 3.25 = 0.083

試圖表示 12.67 時,您能得到的最接近的值是 12.625

答案

12.67 - 12.625 = 0.045


使用 8 位定點無符號分數,其中 4 位用於小數點

找到試圖表示 8.8 的絕對誤差

答案

1000.1101 = 8.8125,我們能得到的最接近的值
8.8 - 8.8125 = -0.0125

相對誤差

[編輯 | 編輯原始碼]

這是所需值與舍入值之間的百分比差異。



Example:
(23.27 – 23.25) / 23.27 = 0.09%
練習:相對誤差

給出以下數字的相對誤差

試圖表示 3.333 時,您能得到的最接近的值是 3.25

答案

  • 3.333 - 3.25 = 0.083
  • (0.083 / 3.333)*100 = 2.49%

試圖表示 12.67 時,您能得到的最接近的值是 12.625

答案

  • 12.67 - 12.625 = 0.045
  • (0.045/12.67)*100 = 0.36%

使用 8 位定點無符號分數,其中 4 位用於小數點

找到試圖表示 8.8 的絕對誤差

答案

  • 1000.1101
  • 8.8 - 8.8125 = 0.0125
  • (0.0125/8.8)*100 = 0.14%

抵消誤差

[編輯 | 編輯原始碼]

將一個非常小的數字加到一個非常大的數字上,對大的數字沒有任何影響,涉及非常大或非常小的數字的方程將給出錯誤的結果。上面的網路搜尋引擎示例很好地證明了這一點

999999999999999 - 999999999999998 = 0

您也可能看到類似以下內容

999999999999999 - 1 = 0

當一個數字或一個方程的結果太小時,您的尾數和指數可能沒有足夠的位數來顯示它。在下面的示例中,該數字將被註冊為 0。

Try and show 0.0000000000000000000000000001 in 12 bit FP

當一個和的結果太大而無法用您的數字系統表示時,您可能會用盡表示它的空間,並最終儲存一個更小的數字。

Try and show 99,999,999,999,999,999,999 in 12 bit FP
華夏公益教科書