当我将na值设为1时,为什么结果等于2而不是3。这是我的代码
#include <stdio.h>
int main()
{
int n;
float result;
scanf("%d", &n);
result = 1 + n/(2*n+1)*3/2;
while (n != 1)
{
result = result*(n-1)/(2*(n-1)+1);
n = n-1;
}
result = result * 2;
printf("%f", result);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
由于n是int,所以右侧的数学运算是整数运算,而不是浮点数。然后将结果提升为浮动以存储到中result。
result = 1 + n/(2*n+1)*3/2;
result = 1 + 1/3*3/2;
result = 1 + 1;
result = float(2);
Run Code Online (Sandbox Code Playgroud)
使用float常量使它实际计算为浮点数。
result =1.0f + n/(2.0f*n+1.0f)*3.0f/2.0f;
Run Code Online (Sandbox Code Playgroud)