單精度與雙精度

浮點數7位有效數字.
雙精度數16位有效數字.
含義:代表單精度和雙精度精確的範圍不同,單精度,也即float,通常在計算機中存儲佔用4字節,也32位,有效位數爲7位;雙精度(double)在計算機中存儲佔用8字節,64位,有效位數爲16位。
緣由:無論float仍是double 在計算機上的存儲都遵循IEEE規範,使用二進制科學計數法,都包含三個部分: 符號位,指數位和尾數部分。其中float的符號位,指數位, 尾數部分分別爲1, 8, 23. 雙精度分別爲1, 11, 52。
精度主要取決於尾數部分的位數,float爲23位,除去所有爲0的狀況之外,最小爲2的-23次方,約等於1.19乘以10的-7次方,因此float小數部分只能精確到後面6位,加上小數點前的一位,即有效數字爲7位。 相似,double 尾數部分52位,最小爲2的-52次方,約爲2.22乘以10的-16次方,因此精確到小數點後15位,有效位數爲16位。

 

 

有效數字通常地,一個近似數,四捨五入到哪一位,就說這個數精確到哪一位,這時,從左邊第一個不是0的數字起,到精確的數位止,全部的數字,都叫作這個數的有效數字.

對沒有小數位且以若干個零結尾的數值,從非零數字最左一位向右數獲得的位數;對其餘十進位的數,從非零數字最左一位向右數而獲得的位數就是有效位數.spa

例如:3.3 有二個有效數字
3.33 有三個有效數字
討論:近似數0.038有幾個有效數字,0.03080呢?
分別有二和四位有效數字
 
案例:2703.625(10進制)轉換爲IEEE 754的32位單精度浮點格式
整數部分:採用除基取餘法,基數爲16,2703/16,商168,餘15,即F168/16,商10,餘810/16,商0,餘10,即A從上到下依次是個位、十位、百位,因此,最終結果爲(A8F)16。(2703)10=(A8F)16=(1010 1000 1111)2小數部分0.625×2=1.25,取10.25×2=0.5,取00.5×2=1,取1(0.625)10=(0.101)2    (2703.625)10=(2703)10+(0.625)10    =(1010 1000 1111)2+(0.101)2=(1010 1000 1111.101)2單精度浮點數保存的字節格式以下:地址:+0         +1         +2         +3內容:SEEE EEEE  EMMM MMMM   MMMM MMMM  MMMM MMMM根據IEEE浮點數的定義,將上述二進制數規格化:(2703.625)10>(101010001111.101)2>+1.01010001111101 * (2^11)符號S爲正,等於0 B;指數EEEEEEEE爲11+127=138,等於10001010  B;尾數爲01010001111101000000000 B;合成後爲0 10001010 010 1000 1111 1010  0000 0000若將上述值表示爲十六進制數,則爲(45 28 FA  00)16。
相關文章
相關標籤/搜索