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位有效数字