세 개의 double 값이 있다고 가정합니다. 다음과 같이 형식을 지정하고 인쇄해야 합니다.
첫 번째 값의 정수 부분을 소문자 16진수 형식으로 인쇄해야 합니다.
두 번째 값을 소수점 이하 두 자리까지 인쇄하고 그 값 앞에 양수인지 음수인지 표시하는 기호를 붙여야 합니다. 인쇄할 두 번째 값은 오른쪽 맞춤이어야 하며 길이는 15자이고 왼쪽의 사용되지 않은 위치에는 밑줄이 그어져 있어야 합니다.
소수점 9자리의 과학적 표기법으로 세 번째 값을 인쇄해야 합니다.
따라서 입력이 256.367, 5783.489, 12.5643295643이면 출력은
0x100 _______+5783.49 1.256432956E+01
가 됩니다. 이 문제를 해결하기 위해 다음 단계를 따릅니다.
hex 플래그로 값을 16진수 형식으로 인쇄하는 showbase 플래그 16진수 값에 대해 '0x' 접두사를 표시하고, 왼쪽 플래그는 출력 필드에 패딩 문자를 삽입하여 값을 오른쪽으로 채우고, nouppercase 플래그는 출력을 소문자로 인쇄합니다.
right 플래그는 출력 필드에 패드 문자를 삽입하여 값을 왼쪽으로 채우고,fixed 플래그는 고정 소수점 표기법으로 값을 인쇄하고, set(15)는 출력 필드 길이를 15로 설정하고, showpos 플래그는 '+를 앞에 삽입합니다. 출력 ' 기호, setfill('_')은 출력을 밑줄로 채우고 setprecision()은 값의 정밀도를 소수점 2자리로 설정합니다.
setprecision()은 값의 정밀도를 소수점 이하 9자리로 설정하고, 과학 플래그는 값을 과학 표기법으로 인쇄하고, 대문자는 출력 값을 대문자로 만들고, noshowpos는 출력 값 앞의 양수 기호를 생략합니다.
더 나은 이해를 위해 아래 구현을 살펴보겠습니다.
#include <iostream> #include <iomanip> using namespace std; void solve(double a, double b, double c) { cout << hex << showbase << nouppercase << left << (long long) a << endl; cout << right << fixed << setw(15) << setfill('_') << setprecision(2) << showpos << b << endl; cout << setprecision(9) << scientific << uppercase << noshowpos << c << endl; } int main() { solve(256.367, 5783.489, 12.5643295643); return 0; }
256.367, 5783.489, 12.5643295643
0x100 _______+5783.49 1.256432956E+01
위 내용은 지정된 형식으로 값을 인쇄하는 C++ 프로그램의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!