문제

문자열을 이중 값으로 채우려고 합니다. sprintf 이와 같이:

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

하지만 소수점 이하 6자리까지 정밀도가 잘려나가고 있습니다.정밀도를 위해서는 소수점 이하 10자리 정도가 필요합니다.

어떻게 그렇게 할 수 있습니까?

도움이 되었습니까?

해결책

%[너비].[정밀도]

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

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

5 + 1 + 2 = 8

다른 팁

당신이 원하는 것은 수정자입니다:

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

man sprintf에는 형식 지정자에 대한 더 많은 세부 정보가 있습니다.

주의하세요. sprintf의 출력은 C 로케일에 따라 달라집니다.이것은 당신이 원하는 것일 수도 있고 아닐 수도 있습니다.로케일 문서/man 페이지에서 LC_NUMERIC을 참조하십시오.

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

사용해 보세요 %lf 대신에.이는 복식(예전에는 긴 플로트라고 불림)용으로 설계되었습니다.

더블 x = 3.14159265;
printf("15.10lf ", x);

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top