我遇到一段代码问题,其中我有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;
}
提前致谢。
答案 0 :(得分:5)
这个整数除法产生0,因为分母的大小大于分子的大小:
1/100000
您需要在此处使用至少一个浮点数。例如
1.0/100000
答案 1 :(得分:0)
1 / 100000 == 0
因为它是整数除法:
你可以写0.00001
或1. /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;
}