我正在使用一些if语句运行一个简单的for循环.在这个for循环中,3个变量将被赋予一个值,具体取决于for循环中的索引值.看起来相当简单,当我运行代码时,值总是为零,我不知道为什么会发生这种情况.我的for循环在下面提供.我很感激任何建议.
double A [N+1];
double r;
double s;
double v;
for(int i = 2; i < N+1; i++)
{
if(i == 2)
{
r = 1/2/i/(i-1);
s = -1/2/(i*i - 1);
v = 1/4/i/(i+1);
}
else if(i <= N-2 && i > 2)
{
r = 1/4/i/(i-1);
s = -1/2/(i*i - 1);
v = 1/4/i/(i+1);
}
else if(i <= N-4 && i > N-2)
{
r = 1/4/i/(i-1);
s = 0;
v = 1/4/i/(i+1);
}
else
{
r = 1/4/i/(i-1);
s = 0;
v = 0;
}
A[i] = r*F[i-2] + s*F[i] + v*F[i+2];
cout << r << s << v << endl;
}
Run Code Online (Sandbox Code Playgroud)
Kon*_*lph 15
它正在发生,因为你正在使用整数除法.一个例子:
r = 1/2/i/(i-1);
Run Code Online (Sandbox Code Playgroud)
这与:
r = ((1 / 2) / i) / (i - 1);
Run Code Online (Sandbox Code Playgroud)
这与以下相同:
r = (0 / i) / (i - 1);
Run Code Online (Sandbox Code Playgroud)
......这与:
r = 0 / (i - 1);
Run Code Online (Sandbox Code Playgroud)
......是的0.
因为1 / 2是0整数运算.要解决此问题,请使用浮点值.