使用<时的C ++不一致行为在if语句中

时间:2018-04-14 12:47:33

标签: c++

#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; 有没有办法用简单的算术做到这一点?

0 个答案:

没有答案