officialandrey
@officialandrey

Почему компилятор не правильно производит арифметические операции?

3-я строка считает факториал
Остальные по формуле Стирлинга верхний и нижний пределы
Но результаты почему-то выдает одинаковые, хотя это очевидно не правильно, так как 1 / (12n+1) меньше 1 / (12n)
В чем проблема?
Спасибо!
int N, n, i;
	double res1 = 0, res2 = 1, res3 = 0, res4 = 0;
	
	N = 10;

	for (n = 1; n <= N; n++) {
		res1 = sqrt(2 * M_PI * n) * pow((n / M_E), n) * pow(M_E, 1 / (12 * n + 1));
		res2 = res2 * n;
		res3 = sqrt(2 * M_PI * n) * pow((n / M_E), n) * pow(M_E, 1 / (12 * n));
		res4 = sqrt(2 * M_PI * n) * pow((n / M_E), n);
	}
	printf("Bot: %.20f\n", res1);
	printf("Fac: %.20f\n", res2);
	printf("Top: %.20f\n", res3);
	printf("Sti: %.20f\n", res4);
  • Вопрос задан
  • 147 просмотров
Решения вопроса 1
@lz961
1 / (12 * n + 1) == 0 т.к. 1 -- int, 12*n+1 -- int, int/int -- деление с остатком
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы