概述
被一道C语言课后练习题卡了好久,,,原因竟然是double的精度问题。写篇博客标记一下这个错误。
如题,double a,b;然后直接if(a>b)或者if(a<b)或者if(a==b)都是不精确的。
标准做法应该要加一个eps。
const double eps = 1e-6//一般负六次就够了
int e = 10;
if(a+eps<10)//...
if(a<10-eps)//....
if(fabs(a-b)<eps)//判断相等
当然也跟题目很坑有关系,
L1-031. 到底是不是太胖了
时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
陈越
据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。真实体重与标准体重误差在10%以内都是完美身材(即 |真实体重-标准体重| < 标准体重x10%)。已知1市斤=0.5公斤。现给定一群人的身高和实际体重,请你告诉他们是否太胖或太瘦了。
输入格式:
输入第一行给出一个正整数N(<= 20)。随后N行,每行给出两个整数,分别是一个人的身高H(120 < H < 200;单位:厘米)和真实体重W(50 < W <= 300;单位:市斤),其间以空格分隔。
输出格式:
为每个人输出一行结论:如果是完美身材,输出“You are wan mei!”;如果太胖了,输出“You are tai pang le!”;否则输出“You are tai shou le!”。
输入样例:
3
169 136
150 81
178 155
输出样例:
You are wan mei!
You are tai shou le!
You are tai pang le!
这题用int都可以过。。。。。但是用double要特意注意上述问题
最后
以上就是呆萌麦片为你收集整理的c++Double类型不能直接比较大小L1-031. 到底是不是太胖了的全部内容,希望文章能够帮你解决c++Double类型不能直接比较大小L1-031. 到底是不是太胖了所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复