namespace std {
unspecified setprecision(int n);
}
概要
浮動小数点数を出力する精度を設定する。
効果
このマニピュレータをストリームオブジェクトに適用することにより、以下の関数と等価の効果を持つ:
void f(std::ios_base& str, int n) {
str.precision(n);
}
このマニピュレータは、入力ストリームと出力ストリームのどちらに対しても適用できる。
例
#include <iostream>
#include <iomanip>
#include <limits>
int main()
{
constexpr int d = std::numeric_limits<float>::max_digits10;
std::cout << d << std::endl;
float f = 3.145900F;
std::cout << std::setprecision(d) << std::scientific << f << std::endl;
}
13
#include <iostream>
#include <iomanip>
#include <limits>
int main()
{
constexpr int d = std::numeric_limits<float>::max_digits10;
std::cout << d << std::endl;
float f = 3.145900F;
std::cout << std::setprecision(d) << std::scientific << f << std::endl;
}
出力例
9
3.145900011e+00
小数点以下の出力桁数を指定する例
#include <iostream>
#include <iomanip>
#include <limits>
int main()
{
float f = 3.145900F;
// デフォルトは整数部も含めた桁数指定
std::cout << std::setprecision(3) << f << std::endl;
// std::fixedを同時に使用することで小数点以下の桁数指定になる
std::cout << std::fixed << std::setprecision(3) << f << std::endl;
}
14
#include <iostream>
#include <iomanip>
#include <limits>
int main()
{
float f = 3.145900F;
// デフォルトは整数部も含めた桁数指定
std::cout << std::setprecision(3) << f << std::endl;
// std::fixedを同時に使用することで小数点以下の桁数指定になる
std::cout << std::fixed << std::setprecision(3) << f << std::endl;
}
出力例
3.15
3.146