實數: 錯誤
- 使用浮點數有什麼缺點?
- 你可能會遇到什麼錯誤?
使用浮點數時,您必須平衡數字的範圍和精度。也就是說,您是想擁有一個非常大的值範圍,還是想要一個非常精確的數字,精確到小數點後很多位。這意味著您將始終權衡用多少位來表示尾數,以及用多少位來表示指數。總結如下
- 如果您想要一個非常精確的數字,請為尾數使用更多位,為指數使用更少的位,因為這將允許更多的小數位。
- 如果您想要一個更大的數字範圍,請為指數使用更多位,為尾數使用更少的位。
當我們試圖表示某些數字時,有時我們無法在給定的空間內做到這一點,例如,試圖寫下 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,我們能得到的最接近的值 |
這是所需值與舍入值之間的百分比差異。
Example:
(23.27 – 23.25) / 23.27 = 0.09%
|
練習:相對誤差 給出以下數字的相對誤差 試圖表示 3.333 時,您能得到的最接近的值是 3.25 答案
試圖表示 12.67 時,您能得到的最接近的值是 12.625 答案
使用 8 位定點無符號分數,其中 4 位用於小數點 找到試圖表示 8.8 的絕對誤差 答案
|
將一個非常小的數字加到一個非常大的數字上,對大的數字沒有任何影響,涉及非常大或非常小的數字的方程將給出錯誤的結果。上面的網路搜尋引擎示例很好地證明了這一點
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