C語言中float與double的詳細解說

2021-06-27 11:22:57 字數 679 閱讀 6386

double、float都是浮點型。double(雙精度型)比float(單精度型)存的資料更準確些,佔的空間也更大。double精度是float的兩倍,所以需要更精確的計算常使用double。

單精度浮點數在機內佔4個位元組,用32位二進位制描述。

雙精度浮點數在機內佔8個位元組,用64位二進位制描述。

浮點數在機內用指數型式表示,分解為:數符,尾數,指數符,指數四部分。

數符佔1位二進位制,表示數的正負。

指數符佔1位二進位制,表示指數的正負。

尾數表示浮點數有效數字,0.******x,但不存開頭的0和點

指數存指數的有效數字。

指數佔多少位,尾數佔多少位,由計算機系統決定。

可能是數符加

vwin娛樂城

尾數佔24位,指數符加指數佔8位 -- float.

數符加尾數佔48位,指數符加指數佔16位 -- double.

知道了這四部分的佔位,按二進位制估計大小範圍,再換算為十進位制,就是你想知道的數值範圍。

對程式設計人員來說,double 和 float 的區別是double精度高,有效數字16位,float精度7位。但double消耗記憶體是float的兩倍,double的運算速度比float慢得多,c語言中數學函式名稱double 和 float不同,不要寫錯,能用單精度時不要用雙精度(以省記憶體,加快運算速度)。

推薦閱讀:

C語言中的 與

連線符號由兩個井號組成,其功能是在帶引數的巨集定義中將兩個子串 token 聯接起來,從而形成乙個新的子串。但它不可以是第乙個或者最後乙個子串。所 謂的子串 token 就是指編譯器能夠識別的最小語法單元。具體的定義在編譯原理裡有詳盡的解釋,但不知道也無所謂。同時值得注意的是 符是把傳遞過來 的引數...

c語言中陣列與sizeof

我以前的理解是 陣列名字就是指向陣列首元素的指標,然而用sizeof 運算元組名字,把我又弄得有些疑惑了。查了查資料,終於明白了。原來,陣列名字做形參時才被當作指標。而sizeof 並不是乙個函式,而是乙個單目運算子,所以sizeof 裡寫陣列名字,返回的就是陣列佔了多少位元組。例如 char a ...

C語言中「 」與「 」用法比較

下面以結構體為例,跟別使用兩個運算子進行對比。結論 例子 includestruct s 備註1 int main p s s.x 10 printf s.x d n s.x p x 9 printf p x d n p x printf s.x d n s.x 輸出結果 s.x 10 p x 9 ...