부동 소수점의 가변 수를 인쇄
다음과 같이 종단되지 않은 고정 길이 문자열을 인쇄할 수 있는 흥미로운 형식을 발견했습니다.
char newstr[40] = {0};
sprintf(newstr,"%.*s", sizeof(mystr), mystr);
그래서 아마도 printf 명령에 따라 플로트 번호를 인쇄하는 방법이 있을 것 같습니다.
"%8.2f"
정수를 가진 소수점의 수를 선택할 수 있는 능력을 갖습니다.
이와 같은 것:
sprintf(mystr, "%d %f", numberofdecimals, floatnumbervalue)
사용할 수도 있습니다.".*"
부동 소수점의 경우 http://www.cplusplus.com/reference/cstdio/printf/ 도 참조하십시오(refers에서 C++로 이동하지만 형식 지정자는 비슷합니다.)
.number:a, A, e, E, f 및 F 지정자의 경우: 소수점 뒤에 인쇄할 자릿수입니다(기본값은 6).
...
.*:정밀도는 형식 문자열에 지정되지 않고 형식을 지정해야 하는 인수 앞에 있는 추가 정수 값 인수로 지정됩니다.
예를 들어,
float floatnumbervalue = 42.3456;
int numberofdecimals = 2;
printf("%.*f", numberofdecimals, floatnumbervalue);
출력:
42.35
필드 폭과 정밀도 모두 별표를 사용할 수 있습니다.
printf("%*.*f\n", myFieldWidth, myPrecision, myFloatValue);
예를 들어 이 참조를 참조합니다.
어떤 이유에서인지 실제 C 라이브러리에서 플로트 포맷을 위한 정밀도와 폭의 가변을 지원하지 않는다면 자신만의 포맷 문자열을 만드는 것은 그리 어렵지 않습니다.
char fmt[6 + 3*(sizeof width + sizeof precision)]; /* sufficient space */
sprintf(fmt, "%%%d.%df\n", width, precision);
printf(fmt, value);
물론 비용이 들지만 상황에 따라 중앙 집중식으로 처리할 수도 있습니다.
언급URL : https://stackoverflow.com/questions/16413609/printf-variable-number-of-decimals-in-float
'programing' 카테고리의 다른 글
문서에 대한 요소의 위치 찾기 (0) | 2023.10.14 |
---|---|
자바스크립트를 이용하여 서버에 이미지가 존재하는지 확인? (0) | 2023.10.09 |
도커, 그것은 무엇이고 목적은 무엇입니까? (0) | 2023.10.09 |
Oracle에서 SQL 행을 쉼표로 구분된 값으로 변환 (0) | 2023.10.09 |
다른 조각/레이아웃으로 View Pager를 구현하는 방법 (0) | 2023.10.09 |