c++中的浮点数的比较问题的本质:

浮点数的大小比较与整型数是不一样的,计算机中二进制表示的浮点数,能表示的十进制的精度也是有限的,通常情况下,一个十进制要精确到小数点后两位,要用更多位的二进制位数才能表示。

float 能精确到小数点后6位 ,十进制   if(fabs(a) <= 1e-6);

double能精确到小数点后15位,十进制  if(fabs(a) <= 1e-15);

if(fabs(a-b) < 1e-6);只要是小于1e-6,那么a,b这两个数小数点后的前6位(包括第6位)都是相等的。等于1e-6的话,第6位就不相等。

总而言之,计算机用二进制表示一个十进制的浮点数时,小数点后6、15位都是相同的,后面可能不同,因为二进制表示时可能并不能完全表示这个数,它是在用尽可能多的二进制位去逼近这个数。

//

//浮点数的大小比较与整型数是不一样的,特别是比较两个浮点数是否相等时。
//计算机中二进制表示的浮点数,能表示的十进制的精度也是有限的,float 6位小数 double 15位小数。
//通常情况下,一个十进制要精确到小数点后两位,要用更多位的二进制位数才能表示。

//if(fabs(a-b) < 1e-6);只要是小于1e-6,那么a,b这两个数小数点后的前6位
// (包括第6位)都是相等的。要是等于1e-6的话,第6位就不是相等的,他们之间就相差1e-6。
//总而言之,计算机用二进制表示一个十进制的浮点数时,小数点后6、15位都是相同的,后面可能不同,因为二进制表示时可能并不能完全表示这个数,它是在用尽可能多的二进制位去逼近这个数。

               

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值