浮点数的大小比较与整型数是不一样的,计算机中二进制表示的浮点数,能表示的十进制的精度也是有限的,通常情况下,一个十进制要精确到小数点后两位,要用更多位的二进制位数才能表示。
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位都是相同的,后面可能不同,因为二进制表示时可能并不能完全表示这个数,它是在用尽可能多的二进制位去逼近这个数。