【C++】小数点の桁数を指定する方法と注意点【iostream】


setprecisionマニピュレーター

浮動小数点型の桁数を指定したい場合はsetprecisionマニピュレーターを使います。<iomanip>ヘッダーをインクルードする必要があります。

// #include <iomanip>
std::cout << std::setprecision(2) << 3.141; // "3.1"

注意点

桁数として2を指定しましたが、結果は3.14ではなく3.1となります。 整数部も桁数に含まれてしまう点に注意してください。

整数部の桁数が指定した桁数以上の場合、小数部は出力されなくなります。

std::cout << std::setprecision(2) << 12.3; // "12"

fixedフラグ

小数部の桁数をより正確に指定したい場合には書式フラグfixedを使用します。

std::cout << std::fixed;
std::cout << std::setprecision(2) << 3.141; // "3.14"

書式を元に戻す場合はdefaultfloatフラグを使用します。

スポンサーリンク

デフォルト桁数

標準では float型/double型 共に6桁で出力されます。

std::cout << 3.1415926535; // "3.14159"

最大桁数を指定する方法

各種の浮動小数点型で出力可能な最大桁数はnumeric_limitsクラスで取得します。

// #include <limits>
std::cout << std::numeric_limits<float >::max_digits10; // 9
std::cout << std::numeric_limits<double>::max_digits10; // 17

あとはsetprecisionに取得した桁数を指定するだけです。

std::cout << std::fixed;

std::cout << std::setprecision(std::numeric_limits<float >::max_digits10)
          << 3.1415926535;
// output:  "3.141592654"

std::cout << std::fixed;

std::cout << std::setprecision(std::numeric_limits<double>::max_digits10)
          << 3.1415926535;
// output:  "3.14159265350000005"

広告

関連するオススメの記事