如果条件问题(C ++)

时间:2014-01-17 13:34:41

标签: c++ arrays if-statement complex-numbers

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

这是我的代码:

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;
}

提前致谢。

2 个答案:

答案 0 :(得分:5)

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

1/100000

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

1.0/100000

答案 1 :(得分:0)

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;
}