2008-09-16 9 views
5

나는이 같은 sprintf 사용하여 double 값 문자열을 채우기 위해 노력하고 있어요 :어떻게 올바른 정밀도로 문자열로 double 값을 채 웁니다 "% f를"을 사용하는

sprintf(S, "%f", val); 

그러나 정밀도가 소수점 여섯 자리까지 자른다. 정밀도를 위해 소수점 이하 10 자리가 필요합니다.

어떻게 달성 될 수 있습니까?

sprintf(S, "%.10f", val); 

남자의 sprintf는 형식 지정자에 대한 많은 세부 사항이있을 것이다 :

답변

8

% [너비] [정밀도]

너비에는 소수점이 포함되어야합니다.

% 8.2는 8자를 의미합니다. 점 앞에 5 자리, 뒤에 2 자리. 한 문자는 해당 포인트 용으로 예약되어 있습니다. + 2 = 8

7

은 당신이 원하는 것은 수정 자이다.

+0

메모 : 만약 그가 두 배를 사용하고 있다면, "lf"가 더 정확할까요? –

+0

아니요, % f는 (는) double에 맞습니다. – ChrisN

+0

수레는 약 6 자리의 정밀도를 나타냅니다. 이중에 % lf를 사용하십시오. – EvilTeach

1

주의 사항 - sprintf의 출력은 C 로켈을 통해 달라집니다. 이것은 당신이 원하는 것일 수도 아닐 수도 있습니다. 로켈 문서/맨 페이지의 LC_NUMERIC을 참조하십시오.

1

%f은 부동 소수점 값입니다.

대신 %lf을 사용해보세요. 복식 (긴 수레라고 불리던)을 위해 설계되었습니다.

이중 x = 3.14159265;
printf ("15.10lf \ n", x);