保留位(guard bit)、近似位(round bit)和粘滯位(sticky bit)。
保留位:近似後的最低位;
近似位:保留位的後一位;
粘滯位:近似位後的所有位進行或運算後視作一位
truncation:截斷,捨去,因為浮點數的位數是固定的,計算中多出來的位數需要利用一些規則進行捨去(比如四捨五入)
chopping方法:直接把把保留位(有的書上叫lsb)後面的位全部丟掉,比如:
0100100111001 —>010010011
這個方法保留位處的誤差從0到接近1,誤差不平衡,不可取。(平衡的誤差應該是從-1到1或者從0.5到0.5且分布概率一樣)
von neumann rounding方法:如果保留位後面的位全部是0,那就把它後面的位全部丟掉,保留位不變,否則的話,保留位置為1(不管它之前是否為1)。這個方法的誤差在保留位處從接近-1到接近1,誤差是平衡的,但是誤差的絕對值有些小高。
rounding分三種情況:
1.近似位(名詞裡面有介紹,有的書上叫msb)是0,保留位保留,保留位後面的全部都丟了,這是肯定的,近似位不是1都沒有達到四捨五入的"五"。
2.近似位為1,如果近似位後面任意一位還有1(粘滯位),那麼沒商量,保留位直接加1,因為這比四捨五入的「五」要大了
3.近似位為1,但是近似位後面的全部都是0,到了抉擇的時候了:
(1)如果保留位是0,就把保留位後面的全丟了
(2)如果保留位是1,那就給保留位加1,讓它進製後變成0
總之就是在四捨五入剛好等於「五」時,把保留位變成偶數(即0)
Java 語法基礎 浮點數 近似儲存
我們知道,十進位制的小數部分轉換成計算機的二進位制儲存時,採用的是乘2取整法。直到積為1為止。例如,0.8125的轉換過程如下。0.8125 2 1.625 1 0.625 2 1.25 1 0.25 2 0.5 0 0.5 2 1 1 於是,二進位制的結果為0.1101,也就是1.101 2 1 ...
理解浮點數的儲存規則
早就想知道浮點數的儲存原理 從 single 開始理解.single 單精度浮點數 32 位 s ef18 23 如浮點數 13.625 1 10 1 3 10 0 6 10 1 2 10 2 5 10 3 其二進位制表示是 1101.101 1 2 3 1 2 2 0 2 1 1 2 0 1 2 ...
浮點數的比較 1
在數 算當中經常會涉及到判斷兩個數是否相等的情況 對於整數很好處理 a b這樣的乙個語句就可以解決全部的問題 但是對於浮點數是不同的 1.浮點數在計算機當中的二進位制表達方式就決定了大多數浮點數都是無法精確的表達的 現在的計算機大部分都是 數字計算機,不是模擬機,數字機的離散化的資料表示方法自然無法...