Это может быть что-то действительно простое, что я просто упускаю, однако у меня возникают проблемы с использованием типа данных double. здесь гласит, что двойное число в C ++ с точностью ~ 15 цифр.Тем не менее в коде:
double n = pow(2,1000);
cout << fixed << setprecision(0) << n << endl;
n хранится точное значение 2 ^ 1000, то есть, что составляет 302 десятичных знака в соответствии с WolframAlpha.Тем не менее, когда я пытаюсь вычислить 100 !, с помощью функции:
double factorial(int number)
{
double product = 1.0;
for (int i = 1; i <= number; i++){product*=i;}
return product;
}
Неточности начинают появляться на 16-й цифре.Может кто-нибудь объяснить, пожалуйста, это поведение, а также предоставить мне какое-то решение.
Спасибо