C++程式列印值到指定格式
假設我們得到三個雙精度浮點數。我們需要對它們進行格式化,並按照以下格式列印。
我們需要以十六進位制格式(使用小寫字母)列印第一個值的整數部分。
我們需要列印第二個值,保留兩位小數,並在其前面加上符號以表示其正負。第二個值需要右對齊,寬度為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() 將值的精度設定為最多兩位小數。
setprecision() 將值的精度設定為最多九位小數,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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP