The output is as:
$ ./printnum
FLOAT: 3.1415927410125732421875000
DOUBLE: 3.1415926535897931159979635
LONG DOUBLE: 3.1415926535897931159979635
for the below program:
int main(int argc, char *argv[])
{
int i;
float a;
double b;
long double c;
a=3.141592653589793238462643383279502884197;
b=3.141592653589793238462643383279502884197;
c=3.141592653589793238462643383279502884197;
printf("FLOAT: %.25f\n",a);
printf("DOUBLE: %.25f\n",b);
printf("LONG DOUBLE: %.25Lf\n",c);
};
I could not be sure why the output looks like double for %f and %Lf both.