1樓:金色潛鳥
float資料 機器內是2進位制數,
1位符號位
8位指數位
23位「尾數」位
共32 位 2進位制數。
平時講 有效數字 是6~7位 ,指10進位制。
通常程式輸入的數是10進位制,進入機器後要化成2進位制,計算完又轉十進位制輸出。
10進位制到2進位制,2進位制到10進位制 轉換,有的數化不淨,有的數化得淨。
如同10進位制分數化10進位制小數,有的化得淨(例如 4分之1,變0.25),有的化不淨(例如 3分之1,變0.33333....)。
10進位制到2進位制,2進位制到10進位制 轉換,化得淨的效數字7位,化不淨的效數字6位,因為最後一位有舍入誤差。
例如:float x,y;
x=0.51; // 化不淨
y=0.5; // 化得淨
printf("x=%.8f y=%.8",x,y); // 輸出 0.50999999 0.50000000
2樓:
有效數字是和所佔記憶體的位元組數有關,float佔4個位元組,然後再用二進位制算出它的範圍
c語言中,float型別的有效位數不是7位,double的有效位數不是16位嗎?為什麼這個輸出結果 50
3樓:匿名使用者
這個有效位是指小數點後的位數
4樓:匿名使用者
建議搜尋一下 ieee754 看看浮點數的詳細定義。
c語言中.float都說是是顯示7位有效數字
5樓:銀河群峰之巔
7位有效數字的意思是,超過7位的就沒有意義了。你這個結果四捨五入到7位,你看看是多少。
你的數字會變是因為, 十進位制是有限小數的數,轉到二進位制可能是無限小數。0.2就是。
6樓:匿名使用者
因為a不是2222.2,在電腦裡存的是2進位制,2222.2轉成2進位制會有誤差。
7樓:伏無
是的,在c語言中float是顯示小數點後六位小數,如果你想縮小的話那就在最後的printf(".2f",a);
至於點後面要多少你可以隨便更改。
至於說為什麼數字變小了呢,是因為計算機本來就不擅長對小數的處理,這有一個精度的問題。
8樓:記住回憶
顯示小數點後的6位有效數字。
9樓:匿名使用者
float a;
a = 2222.2f;
改成這樣就行了,錯誤原因是a是float型別,2222.2預設為double型別,強制型別轉換資料會有損失。加上f轉換為double後就可以給a賦值了。
c語言中float和double的區別,float六位有效數字是指什麼 30
C語言中關於改變資料型別以提取float中的整數和小數部分
分析如下 來 一種簡單的辦源 法是直接強制轉換到int型就是整數部分。減去這個int型就是小數部分了。如下 float n 12.223 int x int n float y n float x 得出的x為資料的整數部分,y為資料的小數部分。拓展資料 浮點型資料型別,float 資料型別用於儲存單...
C語言中不同資料型別在記憶體中所佔據的位元組大小是多少
型別 位元組 char 1short int 2int 2 tc 4 vc long 4float 4double 8long double 10 c語言中不同資料型別在記憶體中所佔據的位元組大小 型別 位元組 char 1short int 2int 2 tc 4 vc long 4float 4...
c語言中的基本資料型別包括無值型,無值型是什麼意思
c 中無值型指void.列舉型不是基本資料型別。基本資料型別包括 整形int 字元型 單字元型 char 寬字元型 wchar t實型 單精度型 float雙字元型 double邏輯型 bool 就我上面寫的,c 基本資料型別只有整形,字元型,實型,邏輯型。沒有無值型。整個資料型別關係如下 資料型別...