Witam. Piszę program potrzebny mi do obliczeń i muszę mieć 100% dokładność nawet przy 20-30 miejscach po przecinku, dlatego korzystam z long double oraz funkcji setprecision. Tutaj wrzucę wycinek który mi wszystko zaburza:
X i Y to 9 do potęgi 2, przy czym w przypadku X podnosiłem do n, któremu zdefiniowałem wartość 2, a Y podniosłem po prostu do 2. Teoretycznie powinien wyjść taki sam wynik, jednak po 16 miejscu po przecinku są liczby, których nie powinno być.
Dlaczego tak się dzieje? Co mam zrobić, aby móc podnosić do n i wynik był prawidłowy?
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
int n=2;
long double x;
long double y;
int main()
{
cout<<setprecision(10000);
x = pow(9, n);
y = pow(9, 2);
cout << x << endl;
cout << y << endl;
return 0;
}