C語言浮點數的階碼和尾數的長度是有限制的,超過的部分該如何處理?會有什麼影響

2022-11-06 19:12:06 字數 2043 閱讀 8762

1樓:聽不清啊

超過的部分會被丟棄。

階碼超出的話,就溢位錯誤了,上溢的話程式就不能運算了;下溢的話,資料就從非0變成0了。有時會造成原則的錯誤(如除以0出錯、求0的對數等等),有時則不造成嚴重的影響。

尾數超出的部分捨去, 這個就是平常所說實數處理的誤差問題或精度問題。舉個最簡單的例子:1/10即0.1,在二進位制下就無法準確地表示出來。(在二進位制下,它是乙個無限迴圈小數)

2樓:匿名使用者

尾數超出的部分捨去, 這個就是平常所說的精度問題階碼是整數, 如果是負整數超過範圍, 整個浮點數被當作0.

如果是正整數超過範圍, 就說明超出了數的表示範圍, 統一被當作 "無窮大" 即是 inf

如果乙個浮點數是inf, 和一般的浮點數計算有點區別那就是: 任何乙個有限數x

inf + x == inf

inf - x == inf

inf + inf == inf

inf * 正數 == inf

inf * 負數 == -inf

inf * 0 == nan

inf - inf == nan

其中 nan是除了inf以外的另外乙個特殊浮點數, 它表示 "不知道這個數應該是多少"

更多細節自行搜尋檢視浮點數國際標準: ieee745

3樓:

超過部分被截斷,可能影響結果。

4樓:

超出的部分不起作用被自動忽略,大多會影響結果

浮點數所能表示的數值範圍和精度取決於什麼

5樓:

浮點數的精度取決於尾數的位數,數值的範圍取決於階碼的位數,在浮點數總位數不變的情況下,階碼位數越多,位數字數就越少。即表示的範圍越大,精度就會越差。

6樓:向天致信

浮點數所能表示的範圍取決於階碼;精度取決於尾數。

浮點數是屬於有理數中某特定子集的數的數字表示,在計算機中用以近似表示任意某個實數。具體的說,這個實數由乙個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)的整數次冪得到,這種表示方法類似於基數為10的科學計數法。

7樓:匿名使用者

範圍取決於階碼,精度取決於尾數

計算機浮點數表示中,階碼是什麼?

8樓:聽不清啊

不是這樣的,31415926都是尾數的範疇。講通俗一點,就是尾數表示它的二專進製數字是哪些,而屬階碼則表示它要乘以2的多少次方(二進位制的小數點要向左或向右移動幾位)。

浮點數是屬於有理數中某特定子集的數的數字表示,在計算機中用以近似表示任意某個實數。具體的說,這個實數由乙個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)的整數次冪得到,這種表示方法類似於基數為10的科學計數法。

乙個浮點數a由兩個數m和e來表示:a = m × b^e。在任意乙個這樣的系統中,我們選擇乙個基數b(記數系統的基)和精度p(即使用多少位來儲存)。

m(即尾數)是形如±d.ddd...ddd的p位數(每一位是乙個介於0到b-1之間的整數,包括0和b-1)。

如果m的第一位是非0整數,m稱作規格化的。有一些描述使用乙個單獨的符號位(s 代表+或者-)來表示正負,這樣m必須是正的。e是指數。

結構由此可以看出,在計算機中表示乙個浮點數,其結構如下:

這種設計可以在某個固定長度的儲存空間內表示定點數無法表示的更大範圍的數。

9樓:gta小雞

浮點數實際上就是二進位制的科學計數法,階碼指科學計數法中的指數,尾數指科學計數法內中小數點之後容的部分。

例如對於十進位制的3.14×10²,「階碼」就是2,而「尾數」則是14。

同理對於二進位制的1.00111010×10^1000,「階碼」就是1000,而「尾數」則是00111010。

當然,ieee754中定義的真正的階碼還要加上乙個固定偏移量127(1111111),也就是1000+1111111=10000111。並且,尾數一定是23位的(對於單精度浮點數)或52位的(對於雙精度浮點數)。

c語言中怎樣判斷輸入的是整數還是浮點數

先存成字串,判斷有沒有小數點,再從字串格式化成整型或浮點型。include include include char strchr const char str,int ch int main int argc,char argv else system pause return 0 scanf s...

c語言如何把整型轉換成浮點數,C語言如何把整型轉換成浮點數?

程式猿3號 c語言有以下幾種取整方法 1 直接賦值給整數變數。如 int i 2.5 或 i int 2.5 這種方法採用的是捨去小數部分,能用於你的問題。2 c c 中的整數除法運算子 本身就有取整功能 int int 而下面介紹的取整函式返回值是double。整數除法對正數的取整是捨去小數部分,...

C語言中給浮點數賦值問題c語言中將乙個浮點型賦值給整型時,會不會四捨五入?

float d 0.5 這叫宣告和初始化。願意寫 float d 0.5f 也可以。常數 0.5 預設 處理成 double 型。0.5f 規定 它 是 float 型.其實這不是什麼大問題。相對c語言中別的問題,這個可以完全忽略。float d 這叫宣告。d 0.5 這叫賦值語句。如果你前面有過 ...