2010.12.14 关于float类型

本文解析了32位Windows系统下C++中float和double类型的内存占用,并对比了Sqlserver中的real和float类型。阐述了float32和double64的具体构成,包括符号位、指数位及尾数位,并详细解释了取值范围和精度。

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位


 

 

转载于:https://www.cnblogs.com/peijihui/archive/2010/12/14/1905922.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值