3 つの double 値があるとします。次のようにフォーマットして印刷する必要があります。
最初の値の整数部分を小文字の 16 進形式で出力する必要があります。
2 番目の値を小数点以下 2 桁まで出力し、その値が正か負かを示す符号を先頭に付ける必要があります。出力される 2 番目の値は、右寄せで 15 文字長にし、左側の未使用の位置に下線を引く必要があります。
3 番目の値を小数点以下 9 桁の科学表記法で出力する必要があります。
したがって、入力が 256.367、5783.489、12.5643295643 の場合、出力は
0x100 _______+5783.49 1.256432956E+01
になります。 この問題を解決するには、次の手順に従います。
hex フラグは値を 16 進形式で出力し、showbase フラグは 16 進値のプレフィックス「0x」を表示します。left フラグは出力フィールドに埋め込み文字を挿入して値を右に埋め込みます。 , 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 中国語 Web サイトの他の関連記事を参照してください。