2010.12.14 关于float类型

1、在32位windows系统下C++中,float类型占4个字节,double 类型占8个字节;int型也是占4个字节。

 

2、但是发现在Sqlserver中,没有double类型,只有real和float,查找资料可以看到:

float:从-1.79E+308到1.79E+308可变精度的数字
real:从-3.04E+38到3.04E+38可变精度的数字

所以real型,其实就是C++中的float,占4个字节;而Sqlserver中的float,其实等于C++中的double,占8个字节。

3、那么float到底是怎么计算的呢?

                       符号位         指数位         尾数位

float32位中,   1位符号位,8位指数位,    23位尾数位
double64位中,1位符号位,11位指数位,  52位尾数位

取值范围看指数部分。

float是有符号型,其中,8位指数位,2^8=(-128—127),因此实际的范围是-2^128—2^127,约为-3.4E38—3.4E38

同理double范围约是-1.7E308—1.7E308,

精度是看尾数部分
float尾数位23位,2^23=8.3E6,7位,所以不同的编译器规定不同,有些是7位,有些8位
double尾数52位,2^52=4.5E15,15位,所以double的有效位数是15位


 

 

你可能感兴趣的:(float)