假設我們有三個雙精確值。我們需要按照以下格式對它們進行格式化和列印。
我們需要以小寫字母的十六進位格式列印第一個值的整數部分。
我們需要列印第二個值,保留兩位小數,並在前面加上符號以顯示它是正數還是負數。要列印的第二個值必須右對齊,長度為15個字符,在左側未使用的位置上用下劃線填充。
我們需要以科學計數法列印第三個值,保留九位小數。
因此,如果輸入為256.367、5783.489、12.5643295643,則輸出將是
0x100 _______+5783.49 1.256432956E+01
為了解決這個問題,我們將按照以下步驟進行:
hex標誌以十六進位格式列印值,showbase標誌顯示十六進位值的前綴'0x',left標誌在輸出欄位中插入填充字元以將值填入右側, nouppercase標誌以小寫字母列印輸出。
right標誌在輸出欄位中插入填充字元以將值填入左側,fixed標誌以定點表示法列印值,set(15)將輸出欄位長度設為15, showpos標誌在輸出前插入' '符號,setfill('_')用底線填入輸出,setprecision()將值的精確度設定為2位小數。
setprecision()將值的精確度設為9位元小數,scientific標誌以科學計數法列印值,uppercase使輸出值變成大寫字母,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中文網其他相關文章!