如何判断两个浮点数相等(附程序)

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main()
{
float a,b;
scanf("%10f%10f",&a,&b);
printf("%10f%10f\n",a,b);
if(abs(a-b)<=(1e-6))
printf("equ\n");
else
printf("no equ\n");
return 0;
}
看下这个程序怎么修改,我输入2.2 2.3的时候显示相等;输入2 3的时候显示不相等,请大神看下应该怎么弄?

第1个回答  推荐于2017-09-20
你这个问题出在SCANF上面%10f并不能保留小数点后面的精度
如果想保留小数点后4位精度的话 应该这么写 %.4f

推荐一篇博文
http://blog.csdn.net/turkeyzhou/article/details/2755970

一般都是在允许的某个范围内认为像个浮点数相等,允许的误差范围为1e-6
bool float_equals(float a,float b)
{
if (abs(a-b)<=1e-6)
return true;
return false;
}
或者如果想判断小数点后4位精度试 可以先放大再判断
bool float_equals(float a,float b)
{
int tmpa=(int)(a *10000);
int tmpb=(int)(b *10000);
if (a==b)
return true;
return false;
}

还有不明白的 可以HI我本回答被提问者采纳
相似回答