как использовать математику в C ++ - PullRequest
0 голосов
/ 03 ноября 2019

Когда я даю значение n, равное 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;
}

1 Ответ

7 голосов
/ 03 ноября 2019

Поскольку n - это int, математика с правой стороны выполняется как целочисленная математика, а не как число с плавающей точкой. Затем результаты повышаются до значения с плавающей запятой для сохранения в result.

result = 1 + n/(2*n+1)*3/2;
result = 1 + 1/3*3/2;
result = 1 + 1;
result = float(2);

Используйте float константы, чтобы заставить его фактически рассчитываться как число с плавающей запятой.

result =1.0f + n/(2.0f*n+1.0f)*3.0f/2.0f;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...