如何在C ++中使用数学

0 c++ math

当我将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)

mhh*_*mon 7

由于nint,所以右侧的数学运算是整数运算,而不是浮点数。然后将结果提升为浮动以存储到中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)