C : printf ()를 통해 인쇄 할 때 두 배가 얼마나 오래있을 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1012747

  •  06-07-2019
  •  | 
  •  

문제

이중 값에서 인쇄 할 스트링의 정확한 길이를 지정해야하지만 필요한 것보다 더 이상 출력을 제한하고 싶지 않습니다.

printf ()에 의해 형식화 될 때 6 자리 정밀 더블의 최대 길이는 얼마입니까?

구체적으로, x에 어떤 가치를 주어야하는지 printf("%X.6lg",doubleValue); 값이 잘리지 않도록하기 위해?

길이에 대해 구체적으로 해야하는 이유는 이중 값의 많은 문자열 표현으로 구성된 MPI 파생 데이터 유형을 정의하고 MPI 프로세스 사이에 파일의 영역을 나누기 위해 정확한 길이를 알아야하기 때문입니다.

분명하기를 바랍니다. 답변 해 주셔서 미리 감사드립니다.

도움이 되었습니까?

해결책

사용 printf("%.6g", doubleValue) 또는 printf("%.6Lg", doubleValue)

정밀 지정자에 선행 숫자 ( "너비")를 떠나면 값의 적분 부분의 길이를 요구하지 않습니다.

또한 UnderCase "L"은 귀하의 값이 긴 int임을 지정합니다. 대문자 "l"은 긴 이중 값을 지정합니다.

또한 이것이 과학적 표기법으로 잠재적으로 변경되기를 원하지 않는다면 (짧은 표현이라면) "G"대신 "F"를 사용합니다.

a printf 참조.

다른 팁

IEEE 더블의 최대 지수는 1023이므로 가장 큰 더블은 1 + 1/2 + 1/4 + 1/8 + ... 등 * 2^1023입니다. 소수점 표기로 약 318자가 될 것입니다.

"E"형식 지정자를 사용하지 않는 이유는 무엇입니까?

많은 유용한 값을 포함하는 <float.h>가 있습니다. 긴 더블 하지만.

같은 파일이 아마도 더블 플랫폼에는 6 자리 이상의 정밀도가 있습니다 ...

추신: 또한 위의 Demi의 답변에 주목하십시오. 그는 당신의 printf ()에서 나를 탈출 한 다양한 결함을 지적합니다.

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