"%f"를 사용하여 double 값을 올바른 정밀도로 문자열에 채우는 방법
-
09-06-2019 - |
문제
문자열을 이중 값으로 채우려고 합니다. sprintf
이와 같이:
sprintf(S, "%f", val);
하지만 소수점 이하 6자리까지 정밀도가 잘려나가고 있습니다.정밀도를 위해서는 소수점 이하 10자리 정도가 필요합니다.
어떻게 그렇게 할 수 있습니까?
해결책
%[너비].[정밀도]
너비에는 소수점이 포함되어야 합니다.
%8.2는 8자 너비를 의미합니다.점 앞 5자리, 뒤 2자리.한 문자가 포인트용으로 예약되어 있습니다.
5 + 1 + 2 = 8
다른 팁
당신이 원하는 것은 수정자입니다:
sprintf(S, "%.10f", val);
man sprintf에는 형식 지정자에 대한 더 많은 세부 정보가 있습니다.
더 자세한 내용은 다음을 참조하세요. 위키피디아 printf 기사, 섹션 "printf 형식 자리 표시자" 그리고 같은 페이지의 좋은 예.
주의하세요. sprintf의 출력은 C 로케일에 따라 달라집니다.이것은 당신이 원하는 것일 수도 있고 아닐 수도 있습니다.로케일 문서/man 페이지에서 LC_NUMERIC을 참조하십시오.
%f
부동 소수점 값입니다.
사용해 보세요 %lf
대신에.이는 복식(예전에는 긴 플로트라고 불림)용으로 설계되었습니다.
더블 x = 3.14159265;
printf("15.10lf
", x);
제휴하지 않습니다 StackOverflow