- 单独使用std::setprecision
如下:
#include <iostream>
#include <iomanip>
#include <cmath>
#include <limits>
int main()
{
const long double pi = std::acos(-1.L);
std::cout << "default precision (6): " << pi << '\n'
<< "std::setprecision(10): " << std::setprecision(10) << pi << '\n'
<< "max precision: "
<< std::setprecision(std::numeric_limits<long double>::digits10 + 1)
<< pi << '\n';
}
输出如下:
可以看到当设置精度为多少位时,则输出数值中的数字(不包含小数点、正负号)就有多少位,如上例中的 std::setprecision(10) << pi,则输出3.141592654,不算小数点,数字有10位。
- std::setprecision和std::ios::fixed一起使用
如下:
#include <iostream>
#include <iomanip>
#include <cmath>
#include <limits>
int main()
{
std::cout.setf(std::ios::fixed);
const long double pi = std::acos(-1.L);
std::cout << "default precision (6): " << pi << '\n'
<< "std::setprecision(10): " << std::setprecision(10) << pi << '\n'
<< "max precision: "
<< std::setprecision(std::numeric_limits<long double>::digits10 + 1)
<< pi << '\n';
}
输出结果如下:
可以看到,当 std::setprecision和std::ios::fixed一起使用时,则精度特指小数点后面保留的位数(注意和前面的区别,前面是包括小数点前面后面所有数字位数),如:上例中的 std::setprecision(10) << pi,则输出3.1415926536,不算小数点,小数点后面数字有10位