Это может быть что-то очень простое, что мне просто не хватает, однако у меня возникают проблемы с использованием двойного типа данных. В нем указывается here, что двойной в C++ точный до ~ 15 цифр. Тем не менее, в коде:Несоответствия с двойным типом данных в C++
double n = pow(2,1000);
cout << fixed << setprecision(0) << n << endl;
п хранит точное значение 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-й разряд. Может кто-то объяснить это поведение, а также предоставить мне какое-то решение.
Благодаря
Нет ничего, чтобы решить эту проблему, как это было предусмотрено. –
Сделайте домашный поиск для "IEEE 754" и ** ** **. – ephemient
Нет, на странице ничего не говорится о том, чтобы быть точным. Он просто говорит, сколько цифр он может охватить. Точность - это то, как работает плавающая точка. – stefan