2012-12-14 7 views
6

printf("%.6g\n",36.666666662);을 사용할 때 출력이 36.666667으로 예상됩니다. 그러나 실제 출력은 36.6667% g 정밀도 문제

무엇을 제공 했습니까? 제 목표는 10 진수 6 자리입니다.

답변

11

이것은 올바른 동작입니다. 경우 a

, A, E, E, F 및 F 지정자이 자릿수 소수점 을 인쇄한다.

g 및 G 지정자의 경우 : 인쇄 할 수있는 최대 유효 자릿수입니다.

g 대신 f을 사용하면 예상대로 작동합니다.


예제 코드

36.6667 
36.666667 

가 온라인으로 작업을 참조하십시오

#include <stdio.h> 

int main(void) { 
    printf("%.6g\n", 36.666666662); 
    printf("%.6f\n", 36.666666662); 
    return 0; 
} 

결과 : ideone.

+0

cplusplus.com은 "설명서"가 아니며 실제로 많은 인터페이스에 대한 잘못된 정보를 가지고 있습니다. 빠른 예제는 마음에 든다. 수정하지 않았다면'scanf '의 반환 값이다. "문서"링크를 만들려면 POSIX에서 C 표준 또는 동등한 언어를 가리켜 야합니다 (링크가 더 쉽습니다). –

+0

@R .. : 좋은 지적, 링크를 제거했습니다. 댓글 주셔서 감사합니다. –