The long double data type can have these conversion specifiers in C: %Le,%LE,%Lf,%Lg,%LG (reference).
I wrote a small program to test :
#include <stdio.h>
int main(void) {
long double d = 656546.67894L;
printf("%.0Le
",d);
printf("%.0LE
",d);
printf("%.0Lf
",d);
printf("%.0Lg
",d);
printf("%.0LG
",d);
return 0;
}
Output:
-0
-4E-153
-0
-4e-153
-4E-153
But none is giving the desired output, which is 656547 (as you may easily understand). What is the reason?
The compiler used is gcc version 3.4.2 (mingw-special).
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…