C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で3つのdouble値を指定形式に整形して出力するプログラム

ここでは、3つのdouble型の値が与えられ、それぞれを決められた書式に整形して出力する方法を解説します。求められる出力形式は次のとおりです。

  • 1つ目の値は整数部分を取り出し、小文字の16進数形式で出力します。

  • 2つ目の値は小数点以下2桁まで出力し、正負を表す符号(+/-)を先頭に付けます。全体は15文字幅で右寄せとし、余った左側の空白はアンダースコア(_)で埋めます。

  • 3つ目の値は小数点以下9桁まで、指数表記(科学技術表記)で出力します。

入力例と出力例

たとえば、入力が「256.367」「5783.489」「12.5643295643」だった場合、出力は次のようになります。

0x100
_______+5783.49
1.256432956E+01

使用するストリームマニピュレータ

C++では <iomanip> の各種マニピュレータを組み合わせることで、この書式設定を簡単に実現できます。ポイントは以下のとおりです。

  • hex:値を16進数形式で出力します。showbase を併用すると「0x」という接頭辞が付き、nouppercase により英字がすべて小文字になります。また left はフィールド内で値を左寄せにし、余白を右側に埋めます。

  • right:フィールド内で値を右寄せにし、余白を左側に埋めます。fixed は固定小数点表記での出力を指定し、setw(15) が出力フィールドの幅を15文字に設定します。showpos は正の値にも「+」符号を付け、setfill('_') が余白をアンダースコアで埋めます。さらに setprecision(2) により小数点以下2桁に丸められます。

  • setprecision(9):小数点以下9桁の精度を指定します。scientific は指数表記での出力を意味し、uppercase により「E+01」のように大文字で表示されます。最後に noshowpos で符号表示を解除し、「+」が付かないようにしています。

実装コード

理解を深めるために、実際のC++コードを見てみましょう。

#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

なお、1つ目の値は16進数として出力するために (long long) へキャストしている点に注意してください。double型のまま hex フラグを適用しても意図した結果にはなりません。また、マニピュレータによる書式設定はストリームに永続的に残るものがあるため、複数の出力を行う場合は setprecisionshowpos の状態変化にも留意すると安全です。

  1. ユーザーが入力した数値を出力するC++プログラム

    C++では、入力と出力のためにそれぞれ「cin」と「cout」というオブジェクトを使用します。cinはistreamクラスのインスタンスであり、キーボードなどの標準入力デバイスに接続されています。一方、coutはostreamクラスのインスタンスであり、ディスプレイ画面などの標準出力デバイスに接続されています。 ユーザーが入力した数値を表示するプログラムは、以下のとおりです。 サンプルコード #include <iostream> using namespace std; int main() { int num; cout<<Enter the num

  2. Javaで整数を出力するプログラムの書き方|Scannerを使った入力方法も解説

    この記事では、Javaで整数を出力する方法をわかりやすく解説します。整数の取り扱いには「int型」を使用します。int型は32ビットの符号付き2の補数で表現される整数型で、扱える値の範囲は最小値が-2,147,483,648(-2^31)、最大値が2,147,483,647(2^31-1)です。int型は、メモリ使用量に特別な懸念がない限り、整数値のデフォルトのデータ型として広く利用されています。宣言のみの場合の初期値は0です。入力と出力のイメージたとえば、ユーザーが「45」という整数を入力すると、プログラムは次のように出力します。Enter an integer: 45期待される出力:The