float和double在游戲行業肯定是用的很多的,雖然這是個很基礎的問題,但是面試時被問到還是感覺說的不是很好。
所以還是總結一下:
float 單精度浮點數在機內占 4 個字節,用 32 位二進制描述。
double 雙精度浮點數在機內占 8 個字節,用 64 位二進制描述。
浮點數在機內用指數型式表示,分解為:數符,尾數,指數符,指數四部分。
數符占 1 位二進制,表示數的正負。
指數符占 1 位二進制,表示指數的正負。
尾數表示浮點數有效數字,0.xxxxxxx, 但不存開頭的 0 和點。
指數存指數的有效數字。
指數占多少位,尾數占多少位,由計算機系統決定。
可能是數符加尾數占 24 位,指數符加指數占 8 位 -- float。
數符加尾數占 48 位,指數符加指數占 16 位 -- double。
知道了這四部分的占位,按二進制估計大小范圍,再換算為十進制,就是你想知道的數值范圍。
對編程人員來說,double 和 float 的區別是 double 精度高,有效數字 16 位,float 精度 7 位。但 double 消耗內存是 float 的兩倍,double 的運算速度比 float 慢得多,
C 語言中數學函數名稱 double 和 float 不同,不要寫錯,能用單精度時不要用雙精度(以省內存,加快運算速度)。
簡單來說,Float 為單精度,內存中占 4 個字節,有效數位是 7 位(因為有正負,所以不是8位),在我的電腦且 VC++6.0 平台中默認顯示是6位有效數字;double為 雙精度,占 8 個字節,有效數位是 16 位,但在我的電腦且 VC++6.0 平台中默認顯示同樣是 6 位有效數字