printf("부동소수점 출력 : [% 10.2f] ", 0.001234);      /* 출력 결과  : [      0.00] */

printf("부동소수점 출력 : [% 10.2e] ", 0.0012345);    /*출력 결과   : [ 1.23e-003] */

printf("부동소수점 출력 : [% 10.2g] ", 0.0012345);   /*출력 결과    : [      0.0012] */


출력 결과 위와 같이 나옵니다. 


% 10.2f : 10칸 데이터 공간중 부동소수점 두번째 자리 까지 출력 이라 결과가 제가 생각하는 값과 일치 했습니다.

% 10.2e : 10칸 데이터 공간중 실수를 지수 형태로 변환하여 e 를 이용해 출력 하는거라 결과에 대해 제 생각과 일치했습니다.


그런데 10.2g의 %g 는  위 값을 %e와 %f로 출력시 출력 값의 숫자가 가장 짧은 값을 선정해 출력하는 것으로 책에서도 배웠고 그렇게 알고 있습니다.

그런데 제 생각은 위 % 10.2f 의 결과값이 0.00으로 짧으니 % 10.2g 가 0.00로 나올것이라 생각했는데 왜 0.0012가 나오는 건지 이해가 안됩니다...

소숫점 4번째 자리까지 출력하는 출력 형식을 % 10.4f 에서 나오는 값이 출력 되는 이유가 뭔지 왜 제 생각과 다른 값이 나오는지 궁금합니다.


읽어 주셔서 감사합니다.