1.浮點類型的種類:
- float——4字節
- double——8字節
- long double——8字節(某些平台編譯器,可能是16字節)
float x=1.23;——建議(float x=1.23F;)
double y=1.23;
long double z=1.23;
2.浮點類型的存儲格式
float和double在存儲方式上都是遵從IEEE編碼規范的
以8.25為例
(1)整數部分十進制整數轉二進制(除法)
所有的整數一定能完整的轉換成二進制
(2)小數部分轉二進制(乘法)
總結:用二進制描述小數不可能完全精確,就像十進制描述1/3不能完全描述
因此8.25轉成浮點存儲就是 1000.01——這個數用二進制的科學計數法表示就是 1.00001*23 指數為3,尾數為00001
就是:01000001000001000000000000000000
用計算器轉為16進制就是:41040000
反匯編查看:
3.浮點類型的精度(整數+小數的位數)
float和double的精度是由尾數的位數來決定的
float:2^23=8388608,一共7位,這意味這最多能有7位有效數字;
double:2^52=4,503,599,627,370,496,一共16位,這意味着最多能有16位有效數字