1. c語言裡面浮點是什麼意思!
就是我們常說的小數,浮點是意思就是數字中有個漂浮的點,這個點就是我們常說的小數點。
針對於樓主的追問:那麼浮點數的值就不是固定的吧?
回答:浮點類型數據包括浮點常數和浮點變數
常數就是我們常見的形式,如12.32,13,44等,浮點型變數就是使用float
或者double
定義的變數,如float
a;這個a是用來存放一個浮點型值的,並且他在程序中可以被改變,常量是不能被改變的。
2. C語言浮點型是怎樣存儲的
C語言中的float類型佔用4個位元組長,這4個位元組分為如下3部分:
1位符號位 8位階碼 23位尾數部分
這23位尾數才真正存儲了二進制的有效位,將這23位二進制轉換為十進制也就6到7位有效數字。
3. C語言的基本類型在內存中怎麼儲存的
1、整型數據:所有整數(正負零)在內存中都是以補碼的形式存在。對於一個正整數來說,它的補碼就是它的原碼本身。對於一個負整數來說,它的補碼為原碼取反再加1。
2、字元型數據:把字元的相對應的ASCII碼(整數,映射關系見ASCII碼表)放到存儲碼單元中,而這些ASCII代碼值在計算機中同樣以二進制補碼的形式存放的。
3、實型數據:也叫浮點數,在計算機中也是以二進制的方式存儲,關鍵在於如何將十進制的小數轉化為二進制來表示。
(3)c語言存放浮點型數據擴展閱讀
C語言存儲數據使用注意事項
C語言中(包括C++/Java)實際存儲浮點數都不是這樣直接存儲「整數二進制+小數二進制」就完事的,這只是第一步。轉化二進制以後還要進行處理,實際的存儲標準是IEEE754
遇見一直「乘不凈」的浮點數,最終能取多少位取決於編譯器對應的浮點類型數據的分配位元組,位元組數越多越精確。故double要比float精確不僅僅是整數部分上限更高,小數部分也能取到更低的位數,故而更精確。
盡量避免大的浮點數和小浮點數運算,由於浮點數存儲的特點,常常會使小的浮點數丟失且判斷兩個浮點數或一個浮點數和整數,常量是否相等,使用abs(x-y)<0.000001這種形式。
4. c語言中的浮點型數據為何用四個位元組存放而不用更多的位元組數呢
你好!
浮點數一般只用4個位元組float和8個位元組double兩種。對於一般的浮點運算,4個位元組已經夠了。要知道以前的編程環境比現在差很多,能節約內存的時候還是要盡量節約的。
如有疑問,請追問。
5. c語言中的浮點型數據為何用四個位元組存放而不用更多的位元組數呢
C語言是用來設計軟體的,將來這些軟體是要在電腦上運行的,按理論來說,使用的位元組越多,計算精度會越高,容量也會越大.但對於日常的計算來說,浮點用四個位元組也差不多夠用了,而且不行的話,你可以用更大類型的.如果使用更多位元組來儲存變數的話,這樣的程序在運行時,會佔用大量的存儲資源.這樣機器運行起來,有時就會變慢的.
6. 關於浮點數在C語言中的存儲問題
你要明白計算機內存只能存儲二進制數據,因此人類習慣的十進制只能通過一定的格式進行轉換,只要是轉換,就有可能丟失精度.實際上大部分CPU對浮點數和雙精度都是按國際規定格式操作的,而轉換工作也是CPU內部的基礎功能之一.聽說過"XXCPU的浮點運算很強"這樣的說法吧.其實這也就是在講CPU對浮點數或者雙精度進行解碼編碼以及運算的能力/效率.
給你段代碼你可以自己調試玩玩可以幫助你理解,你可以修改fl的初始值查看各種浮點數
#definePAUSEsystem("pause")//這個復制到主函數外面
charc,*p1;
char*p;
floatfl=-3.1415926f;
float32*fp;
uintu,e,i;
byteb;
fp=(float32*)&fl;
cout<<"解析浮點數"<<fl<<"在內存中的16進制編碼"<<endl<<endl;
p=MemMap::ToString(fl,'x',1);
cout<<"內存中位元組的存儲順序:"<<endl<<p<<endl<<endl;
delete[]p;
p=MemMap::ToString(fl,'x');
cout<<"轉置後的位元組順序:"<<endl<<p<<endl<<endl;
delete[]p;
p=MemMap::ToString(fl,'0');
cout<<"二進制碼:"<<endl<<p<<endl<<endl;
delete[]p;
p=MemMap::BitMap((void*)&fl,0x80000000);
cout<<"符號的點陣圖(1代表負數,0代表正數):"<<endl<<p<<endl<<endl;
delete[]p;
p=MemMap::BitMap((void*)&fl,0x7f800000);
cout<<"階碼的點陣圖:"<<endl<<p<<endl;
delete[]p;
e=fp->exp-127;
cout<<"提取階碼其值為:"<<fp->exp<<",解碼後為:"<<fp->exp-127<<",意思為小數點向右移"<<e<<"位。"<<endl<<endl;
p=MemMap::BitMap((void*)&fl,0x007fffff);
cout<<"尾數的點陣圖:"<<endl<<p<<endl;
delete[]p;
u=fp->m|0x00800000;//補上二進制尾數的最高位
p=MemMap::ToString((void*)&u,4,'b');
cout<<"編碼時整數的1是省略的,因此補上1,也即小數點在尾數之前:"<<endl<<p<<endl;
delete[]p;
i=u>>(23-e);
cout<<"根據階碼向右移動小數點並取出整數部分:"<<i<<endl;
i=0xffffffff;
i=i>>(32-23+e);
i=i&u;
cout<<"小數部分轉十進制為:"<<abs(fl)-3<<endl;
PAUSE;
下面是運行結果:
7. C語言實型(浮點型)數據在內存中的存放形式
實數分為float型和double型,它們分別對應IEEE 754標准中的單精度浮點數和雙精度浮點數類型,在內存中的存儲形式遵守IEEE 754浮點數標准。以float類型數據為例,3.14159表示成二進制為11.0010010000111111001111......,規格化後表示為1.10010010000111111001111×2^1(小數點後保留23位有效數字,因為IEEE 754標准規定的尾數為23位);指數為1,故階碼為1+127=128=10000000;這是一個正數故符號位為0,因此它在內存中的表示形式是0 10000000 10010010000111111001111,寫成16進制為40490FCF。
8. C語言中float是什麼類型
C語言中float是:單精度浮點型數據類型。
浮點型數據類型,FLOAT 數據類型用於存儲單精度浮點數或雙精度浮點數。浮點數使用IEEE(電氣和電子工程師協會)格式。浮點類型的單精度值具有 4 個位元組,包括一個符號位、一個 8 位 二進制指數和一個 23 位尾數。
由於尾數的高順序位始終為 1,因此它不是以數字形式存儲的。此表示形式為 float 類型提供了一個大約在 -3.4E+38 ~ 3.4E+38 之間的范圍。
應用經驗:
float浮點數兩個浮點數不相等和精度的問題,在實際開發中,經常用整數代替浮點數,因為整數是精確的,效率也更高。
例如人的身高一米七五,以米為單位,用浮點數表示是1.75米,如果以厘米為單位,用整數表示是175。
在 C 和 C++ 中,如下賦值語句:
floata=0.1;編譯器報錯:warning C4305: 'initializing' : truncation from 'const double ' to 'float '
原因:在 C/C++ 中,上述語句等號右邊 0.1,認為是個 float,但是編譯器卻把它認為是個 double(因為小數默認是 double),所以要報這個 warning,一般改成0.1f就沒事了。
以上內容參考:網路-FLOAT
9. float在c語言中的意思
浮點型數據類型。
C語言中float浮點型數據類型,FLOAT數據類型用於存儲單精度浮點數或雙精度浮點數。FLOAT數據類型用於存儲單精度浮點數或雙精度浮點數,浮點數使用IEEE(電氣和電子工程師協會)格式。
浮點類型的單精度值具有4個位元組,包括一個符號位、一個8位excess-127二進制指數和一個23位尾數,尾數表示一個介於1.0和2.0之間的數,由於尾數的高順序位始終為1,因此它不是以數字形式存儲的。
特點:
浮點型數據類型,通俗點講利用指數使小數點的位置可以根據需要而上下浮動,從而可以靈活地表達更大范圍的實數。
float佔用32位存儲空間的單精度(single-precision)值。在一些處理器上比雙精度更快而且只佔用雙精度一半的空間,但是當值很大或很小的時候,它將變得不精確。當你需要小數部分並且對精度的要求不高時,浮點型的變數是有用的。
在計算機系統的發展過程中,曾經提出過多種方法表示實數,但是到目前為止使用最廣泛的是浮點表示法。相對於定點數而言,浮點數利用指數使小數點的位置可以根據需要而上下浮動,從而可以靈活地表達更大范圍的實數。
10. C語言中浮點型變數指什麼意思
就是float型變數 帶小數的 例如 你可以 float i=1.1;i就是浮點型變數。