float的数值范围与小数位精度
2013-09-02 15:41
239 查看
float a; a=1023.00006103515625;//整数部分2^10-1,小数部分2^-14 //a=2047.0001220703125;//整数部分2^11-1,小数部分2^-13 //a=4095.000244140625;//整数部分2^12-1,小数部分2^-12 //a=8191.00048828125;//整数部分2^13-1,小数部分2^-11 //a=16383.0009765625;//整数部分2^14-1,小数部分2^-10 //a=32767.00153125;//整数部分2^15-1,小数部分2^-9 //a=65535.00390625;//整数部分2^16-1,小数部分2^-8 //a=131071.0078125;//整数部分2^17-1,小数部分2^-7 //a=262143.015625;//整数部分2^18-1,小数部分2^-6 //a=524287.03125;//整数部分2^19-1,小数部分2^-5 //a=1046575.0625;//整数部分2^20-1,小数部分2^-4 //a=2097151.125;//整数部分2^21-1,小数部分2^-3 //a=4194303.75;//整数部分2^22-1,小数部分2^-2 //a=-8388607.5;//整数部分2^23-1,小数部分2^-1 a=3.4028234692093846346337460743176E+38;//整数部分2^128 printf("%.16fn",a);//若上面的float整数部分+1,则显示时将忽略小数部分,将损失小数精度 //如上,float的整数范围与小数精度相关,原因就是float的存储方式: //32位双字存储:首位为符号位S,0为正1为负;后8位为指数E,底数为2;最后23位为尾数M // Address+0 Address+1 Address+2 Address+3 //Contents SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM //其数值大小即为X=((-1)^S)*M*(2^E) //因此有小数部分时,float的整数二进制位与小数二进制位和为23; //没有小数部分时,float的整数范围可达到2^128即3.4028236692093846346337460743177e+38
相关文章推荐
- java数值范围以及float与double精度丢失问题
- C语言中关于float、double、long double精度及数值范围理解
- C语言中关于float、double、long double精度及数值范围理解
- 解决java数值范围以及float与double精度丢失的问题
- float精度和数值范围
- C语言中关于float、double、long double精度及数值范围理解
- C语言中关于float、double、long double精度及数值范围理解
- Java--float/double取值范围与精度
- float和double的范围和精度
- float与double的范围和精度
- float与double的范围和精度
- float与double的范围和精度
- java浮点类型float精度与Double精度范围实例使用说明
- float double精度和范围
- float与double的范围和精度
- float与double的范围和精度
- 【C++学习】float与double的范围和精度
- float与double的范围和精度
- Java 浮点数 float和double类型的表示范围和精度
- float,double等表示的数值范围的计算