C++でcoutとsetprecisionを使って小数点以下の桁数を指定して浮動小数点数を出力する方法
この記事では、C++において浮動小数点数をあらかじめ指定した小数点以下の桁数まで出力する方法を解説します。C++では、coutと組み合わせてsetprecisionを使用することで、出力する桁数を自由に制御できます。setprecisionは、iomanipヘッダーファイルに定義されているマニピュレータです。
なお、デフォルト設定ではsetprecision(n)は「有効数字n桁」を意味します。小数点以下ちょうどn桁に固定して表示したい場合は、後述のようにfixedを併用すると便利です。
サンプルコード
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double x = 2.3654789d;
cout << "Print up to 3 decimal places: " << setprecision(3) << x << endl;
cout << "Print up to 2 decimal places: " << setprecision(2) << x << endl;
cout << "Print up to 7 decimal places: " << setprecision(7) << x << endl;
}実行結果
Print up to 3 decimal places: 2.365 Print up to 2 decimal places: 2.37 Print up to 7 decimal places: 2.3654789
補足:小数点以下の桁数を固定して表示する
上記の出力を見ると、setprecision(2)を指定した場合は有効数字2桁として解釈され、四捨五入されて「2.37」と表示されています。もし「小数点以下必ず2桁」のように固定幅で表示したい場合は、std::fixedを組み合わせます。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double x = 2.3654789d;
cout << fixed << setprecision(3) << x << endl; // 2.365
cout << fixed << setprecision(5) << x << endl; // 2.36548
}fixedを指定すると精度が「小数点以下の桁数」として扱われるため、金額や測定値など、桁数を揃えて表示したい場面で特に役立ちます。用途に応じて使い分けてください。
-
C++でXとの合計がフィボナッチ数になるノードを数える方法
各ノードに数値の重みが割り当てられた二分木が与えられます。この記事の目的は、「ノードの重み + X」の計算結果がフィボナッチ数となるノードの個数を求めることです。フィボナッチ数列とは、0, 1, 1, 2, 3, 5, 8, 13… のように続く数列で、n番目の数は(n−1)番目と(n−2)番目の数の和になります。たとえば重みが13であればフィボナッチ数に該当するため、そのノードはカウント対象となります。入力例1temp = 1 の場合。値を入力すると、以下のような木が構成されます。出力Count the nodes whose sum with X is a Fibonacci number
-
C++で木構造のノード数が奇数・偶数となるレベルをすべて出力する方法
この記事では、木(ツリー)構造が与えられたときに、各レベルに含まれるノードの数を調べ、その数が奇数であるレベルと偶数であるレベルをそれぞれ出力する方法を、C++のサンプルコード付きで解説します。 問題の概要 まず、具体的な例を使って概念を確認しましょう。次のような木構造を考えます。 出力: ノード数が奇数のレベル:1, 3, 4 ノード数が偶数のレベル:2 解説: 第1レベルにはノードが1個(奇数)、第2レベルには2個(偶数)、第3レベルには3個(奇数)、第4レベルには1個(奇数)存在します。そのため、奇数となるのは「1, 3, 4」のレベル、偶数となるのは「2」のレベルです。 解き方