浮点数相等比较和64位整数

       我们在做浮点数相等比较的时候,常常使用==,这在常识上来说是完全正确的。但这并非是规范的做法,而且往往导致错误。浮点数是存在一定精度的小数。对于可以精确表示的数用==是可以比较的。但在做等于比较的时候,往往需要把精度考虑在内。

单精度型和双精度型,其类型说明符为float 单精度说明符,double 双精度说明符。在Turbo C中单精度型占4个字节(32位)内存空间,其数值范围为3.4E-383.4E+38,只能提供七位有效数字。双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-3081.7E+308,可提供16位有效数字。

IEEE标准:  
float
的定义为:指数8位,尾数23,   还有一位表示正负。

double的定义为:指数11位,尾数52为,还有一位表示正负。 

在比较的时候一般定义一个精度EPSINON,然后比较ab是否相等时,如果(a<(b+EPSINON))&&(a>(b- EPSINON)),就可以认为二者相等。

我们平常使用整数的时候,通常是32位(32CPU),但有一些需求,如手机号码,可能32位整数无法满足,此时可以使用64位整数。C99扩展了64位整数long long类型。但这可能并非所有的平台都可以支持,此时可以使用ACE来屏蔽此间的差异。使用ACE_INT64ACE_UINT64都是不错的选择,在WindowsLinux下支持64位整数都没有什么问题。

 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值