1203 判断浮点数是否相等

题目描述 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;
}

时间: 2024-10-13 19:01:22

1203 判断浮点数是否相等的相关文章

CODE[VS]-判断浮点数是否相等-浮点数处理-天梯青铜

题目描述 Description 给出两个浮点数,请你判断这两个浮点数是否相等 输入描述 Input Description 输入仅一行,包含两个浮点数 输出描述 Output Description 输出仅一行,如果相等则输出yes,否则输出no. 样例输入 Sample Input 2.980000001 2.9800000000001 样例输出 Sample Output yes 数据范围及提示 Data Size & Hint 我们一般认为两个浮点数相等,当且当他们之间的误差不超过1e-

从如何判断浮点数是否等于0说起——浮点数的机器级表示

本文很大程度上收到林锐博士一些文章的启发,lz也是在大学期间读过,感觉收益良多,但是当时林锐也是说了结论,lz也只是知其然,而不知其所以然,为什么要那样写?为什么要这样用?往往一深究起来就稀里糊涂了,现在有幸还是继续读书,我发现了很多问题理解的还不透彻,亡羊补牢. 比如:有int d;  int *d; bool d; double d:几个变量,经过一系列的计算之后,那么去判断这个四个变量是否等于0该怎么做? 很多菜鸟或者编程功底不扎实的就会出错,一些烂书,尤其国内的一部分大学教材,教授编程语

equal_float判断浮点数相等

/*! \brief 判断两个浮点数是否相等 \return 相等返回true 不等返回false \param float absfloat - 允许的最小误差范围 */ #include "limits.h" using namespace std; bool equal_float( float fa, float fb, float absfloat = numeric_limits<float>::epsilon() ) { if ( fa == fb ) ret

判断浮点数是否相等

1. 浮点数 == 什么时候出现问题 1.1 都为小数或整数,不参与运算 /** *无论 a = 0.1 or 1.0 or 1.1 结果都为true */ public static void main(String[] args){ double a = 0.1; double b = 0.1; float c = 0.1f; float d = 0.1f; System.out.println("a==b : "+ (a == b)); System.out.println(&q

判断浮点数是否为整数

#include<bits/stdc++.h> using namespace std; const double eps=1e-2; bool f(double x) { if(x>(int)(x+0.5)) { if(x-(int)(x+0.5)<eps) return true; } else { if((int)(x+0.5)-x<eps) return true; } return false; } int main() { cout<<f(1.0000

[CodeVS] 纯OI题

[1203] 判断浮点数是否相等 [青铜 Bronze] 我们一般认为两个浮点数相等,当且当他们之间的误差不超过1e-8. 1 /* 2 作者:Wanying 3 题目:p1203 判断浮点数是否相等 4 */ 5 6 /* 7 //如何写一份可以提交的代码?以P1000 A+B为例 8 #include <iostream> 9 using namespace std; 10 int main() 11 { 12 int a, b; //定义两个变量名 13 cin >> a &

codevs-1203

1203 判断浮点数是否相等 题目描述 Description 给出两个浮点数,请你判断这两个浮点数是否相等 输入描述 Input Description 输入仅一行,包含两个浮点数 输出描述 Output Description 输出仅一行,如果相等则输出yes,否则输出no. 样例输入 Sample Input 2.980000001 2.9800000000001 样例输出 Sample Output yes 数据范围及提示 Data Size & Hint 我们一般认为两个浮点数相等,当

不能用==判断两个浮点数相等

在判断两个浮点数 a 和 b 是否相等时,不要用 a==b,应该判断二者之差的绝对值fabs(a-b) 是否小于某个阈值,例如 1e-9. ////在判断两个浮点数 a 和 b 是否相等时,不要用 a==b,应该判断二者之差的绝对值 ////fabs(a - b) 是否小于某个阈值,例如 1e-9. //#include <stdio.h> //#include <math.h> //#define EPSILON 0.000001 //int main() //{ // floa

MATLAB的eps,浮点数相对精度

MATLAB的eps函数,官方帮助文档是这么描述的:Floating-point relateive accuracy,也就是浮点数的相对精度. 大家都知道,在数学中,实数有无穷多个,数值可以无限大,精度也可以无限小.而在计算机中,因为表示数值的字长有限,不可能无限地表示一个数的有效数字.所以在计算机中,是没有绝对概念上的无穷大和无穷小的.两个相邻数字(中间不能再有其他数值)的“间隔”,就是一般意义上的相对精度.(相对精度的具体含义可以自行Baidu,也可以参见这个帖子:关于Matlab的eps