#include "stdafx.h"
#include "../../std_lib_facilities.h"
int main()
{
double val1 = 0;
double val2 = 0;
cout << "Please enter 2 values seperated by a space\n";
while(cin >> val1 >> val2) {
if (val1 > val2) {
cout << val1 << " is the larger value\n";
}
else if (val2 > val1) {
cout << val2 << " is the larger value\n";
}
else {
cout << " values are equal\n";
}
double res1 = val1 - val2;
double res2 = val2 - val1;
cout << res1 << "," << res2 << "\n";
if ((res1 < 0.01 && res2 < 0.01) && val1!=val2) {
cout << " Values are almost equal\n";
}
}
return 0;
}
有问题的部分是最后一个if语句(即使取出val1!= val2,问题仍然存在)。 因此,如果输入相差0.009或0.02,则适用于所有数字 但当差异恰好为0.01时,它仅适用于0,0.01和1 1.01,高于该值(即10,10.01)的任何东西都会打印出cout线。 我想知道为什么会这样,问题是什么? 是否可以在不使用数学函数的情况下修复它?
编辑:Goran Flegar谢谢你!你的评论有助于理解这个问题! 那么绕过这个并实际比较的方法是什么呢 &#34;打印&#34;数字几乎相等&#34;当差异小于1.0 / 100&#34; 有没有办法用简单的算术做到这一点?