Giả sử chúng ta được cho ba giá trị double. Chúng ta phải định dạng và in chúng theo quy tắc sau:
- Phần nguyên của giá trị thứ nhất in dưới dạng hexadecimal chữ thường
- Giá trị thứ hai in với 2 chữ số thập phân, có dấu +/- trước, căn phải, độ rộng 15 ký tự, đệm dấu gạch dưới bên trái
- Giá trị thứ ba in với 9 chữ số thập phân dưới dạng ký pháp khoa học
Ví dụ: 256.367, 5783.489, 12.5643295643 → "0x100 _______+5783.49 1.256432956E+01"
Giải thuật
- Giá trị 1: hex, showbase, nouppercase, left, ép kiểu long long
- Giá trị 2: right, fixed, setw(15), setfill('_'), setprecision(2), showpos
- Giá trị 3: setprecision(9), scientific, uppercase, noshowpos
Ví dụ minh họa
#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;
}
Đầu vào
256.367, 5783.489, 12.5643295643
Đầu ra
0x100 _______+5783.49 1.256432956E+01