如果条件问题 (C++)

If condition issue (C++)

本文关键字:C++ 问题 条件 如果      更新时间:2023-10-16

我在一段代码中遇到了一个问题,其中我有一个if语句来检查复杂数组的对角线元素,如果它们是(1,0)(意味着实部是1,虚部是0)或非常接近它,那么继续;否则停止。但由于某种原因,尽管元素是 (0.999999, 0.000000), (1.000001, 0.000000) 等,但操作始终返回 0。

这是我的代码:

for (i=1; i<=n; i++){
    if ((real(c[i][i][1]) < (1/100000)+1) && (imag(c[i][i][1]) < 1/100000) && (real(c[i][i][1]) > (-1/100000+1) && (imag(c[i][i][1]) > -1/100000)){
        cout<<"Operation continues...";
    }
    else
        return 0;
}

提前谢谢。

这个整数除法产生 0,因为分母的大小大于分子的大小:

1/100000

您需要在此处至少使用一个浮点数。例如

1.0/100000
1 / 100000 == 0因为它

是整数除法:你可以写0.000011. /100000.

顺便说一句,你可以写你的循环:

constexpr double thresold = 0.00001;
for (i = 1; i <= n; i++) {
    if (std::abs(real(c[i][i][1]) - 1.) < thresold
        && std::abs(imag(c[i][i][1]) - 1.) < thresold) {
        cout << "Operation continues...";
    }
    else
        return 0;
}