Умножение и деление на два - PullRequest
       14

Умножение и деление на два

1 голос
/ 17 октября 2010

Почему эти два фрагмента кода дают два разных результата?

    double sum = 1.0;
    double xSqFour = x * x / 4;

    for (int i = 48; i > 1; i-=2) {
        sum = 1.0 + (xSqFour / ((i/2) * (i/2))) * sum;
    }

    return sum;

и

    double sum = 1.0;
    double xSqFour = x * x / 4;

    for (int i = 24; i > 1; i--) {
        sum = 1.0 + (xSqFour / (i * i)) * sum;
    }

    return sum;

1 Ответ

3 голосов
/ 17 октября 2010

У вас есть ошибка границ во втором цикле.Это должно быть i > 0.Первый цикл имеет i > 1, но он также делит i на 2. 1 / 2 == 0, поэтому он должен быть i > 0 во втором цикле.

...