Witam. Mam pewien problem z typem long double, mianowicie typy float oraz double działają dobrze w poniższym kodzie wyświetlając prawidłowy wynik jeśli zmienimy ilość liczb znaczących odpowiednio dla każdego do max 6 i 15. Typ long double powinien działać przynajmniej przy takiej samej ilości liczb znaczących jak double, czyli np. tych 15, jednak co nie ustawie w poniższym kodzie, nawet mniejszą ilość cyfr niż 15, wyświetla wartość nieprawidłową np. -0.000000 lub 0.000000. Dlaczego tak się dzieje? Co robię źle?
#include<stdio.h>
int main(void)
{
long double a, b;
b = 2.0e15 + 1.0;
a = b - 2.0e15;
printf("%lf", a);
getch();
return 0;
}