题目描述 Description
给出两个浮点数,请你判断这两个浮点数是否相等
输入描述 Input Description
输入仅一行,包含两个浮点数
输出描述 Output Description
输出仅一行,如果相等则输出yes,否则输出no。
样例输入 Sample Input
2.980000001 2.9800000000001
样例输出 Sample Output
yes
数据范围及提示 Data Size & Hint
我们一般认为两个浮点数相等,当且当他们之间的误差不超过1e-8。
思路:把两个浮点数以字符串的形式传到字符数组中,然后根据其中一个进行循环判断,注意的是误差不超过1e-8,也就是要先找到小数点的位置。
用flag记录小数点位置,然后根据flag来判断误差是否不超过1e-8。
代码:
#include<stdio.h>
#include<string.h>
int main()
{
char a[20],b[20];
int i,p,flag=0;
scanf("%s %s",a,b);
p=strlen(a);
for(i=0;i<p;i++)
{
if(a[i]==‘.‘)
{
flag==i;
}
if(a[i]!=b[i])
{
if(i<flag+7)
{
break;
}
else
{
if(i==flag+7)
{
if(a[i]-b[i]-‘0‘-‘0‘>1||a[i]-b[i]-‘0‘-‘0‘<-1)
{
break;
}
}
}
}
}
if(i==p)
{
printf("yes\n");
}
else
{
printf("no\n");
}
return 0;
}