- 单独使用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位
本文探讨了C++中std::setprecision与std::ios::fixed的使用,分别介绍了如何设置输出数字的精确位数,以及两者配合时对小数点后位数的影响。通过实例展示了不同精度设置下数值的显示效果。
2288

被折叠的 条评论
为什么被折叠?



