1樓:smile灬微光丶
浮點數所能表示的數值範圍和精度取決於階碼和尾數。
階碼:採用指數的實際值加上固定的偏移值的辦法表示浮點數的指數,好處是可以用長度為 個位元的無符號整數來表示所有的指數取值,這使得兩個浮點數的指數大小的比較更為容易,實際上可以按照字典序比較兩個浮點表示的大小。這種移碼錶示的指數部分,中文稱作階碼。
定點數(即尾數):定點數是指計算機中採用的一種數的表示方法。參與運算的數的小數點位置固定不變。
ieee標準從邏輯上採用一個三元組來表示一個數n,它規定基數為2,符號位s用0和1分別表示正和負,尾數m用原碼錶示,階碼e用移碼錶示。
根據浮點數的規格化方法,尾數域的最高有效位總是1,由此,該標準約定這一位不予儲存,而是認為隱藏在小數點的左邊,因此,尾數域所表示的值是1.m(實際儲存的是m),這樣可使尾數的表示範圍比實際儲存多一位。
擴充套件資料
為了充分利用尾數的二進位制編碼表示更多的有效數字,為了使浮點保持更高的精度以及有統一的表示形式,對浮點數規格化,將尾數的絕對值限定在一個規定的數值範圍內。
規格化的浮點數尾數的絕對值應在1/2~1之間。
尾數m使用補碼錶示,當m>=0時,規格化尾數的形式必須為:m=0.1***x...x(1+n位)
當m<0時,規格化尾數的形式必須為:m=1.0***x...x(1+n位)
尾數的最小負值為-1,最大負值為-(1/2+2^-n)
尾數的最小正值為+1/2,尾數的最大正值為+(1-2^-n)
2樓:
浮點數的精度取決於尾數的位數,數值的範圍取決於階碼的位數,在浮點數總位數不變的情況下,階碼位數越多,位數位數就越少。即表示的範圍越大,精度就會越差。
3樓:向天致信
浮點數所能表示的範圍取決於階碼;精度取決於尾數。
浮點數是屬於有理數中某特定子集的數的數字表示,在計算機中用以近似表示任意某個實數。具體的說,這個實數由一個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)的整數次冪得到,這種表示方法類似於基數為10的科學計數法。
4樓:匿名使用者
範圍取決於階碼,精度取決於尾數
為什麼浮點數的表示範圍比整型數大
浮點數的表示範圍比整型數大是因為採用的表示形式不同。整型數在計算機底層採用補碼的形式表示,除去首位的符號位,剩餘的位數即表示數值的範圍。浮點數在計算機中則是實數由一個整數或定點數 即尾數 乘以某個基數 計算機中通常是2 的整數次冪得到,用以近似表示任意某個實數。1 浮點數和整型數在計算機內的表示方式...
C語言中如何實現將浮點數float轉成int型別
強制型別轉換 比如 float a 10.5 int b int a 這樣 就轉換了,但是不推薦高精度轉低精度 會丟失精度的就像這個,a是10.5 轉換後變成10了小了太多 c語言中將一個浮點型賦值給整型時,會不會四捨五入?c語言中將一個浮點型賦值給整型時,不會四捨五入,會直接捨去小數部分的資料,也...
C語言中浮點數以整數形式輸出錯誤的問題
呵呵,我只給個思路。這個完全不是數學題,是個字串的題。找到輸入資料中小數點的位置,和冪的數值,將小數點往後移動冪指定的位數,如果已經移動到輸入串的尾部加0補充。輸出當然也只能按字串格式輸出。計算機沒有這麼高的精度的!printf a d a f a,a 這個語句決定了 你的結果 a d表示a的輸出結...