用纯C++语法输出固定位数小数的方法简直不要太麻烦。
首先需要用到一个专用头文件<iomanip>,还需要用到一个流操作符setprecision,用于设置输出流中浮点数的精度。
比如设置π的精度。
#include <iostream>
#include <iomanip> // 包含 setprecision 的头文件
int main() {
double pi = 3.14159265358979323846;
// 设置精度为 2,并输出3.1
std::cout << std::setprecision(2) << pi << std::endl;
// 设置精度为 5,并输出3.1416
std::cout << std::setprecision(5) << pi << std::endl;
// 设置精度为 10,并输出3.141592654
std::cout << std::setprecision(10) << pi << std::endl;
return 0;
}
可见,用setprecision设置精度是包括整数部分的,即它指的是总的有效数字位数。
如果你想要保留到小数点后几位,还需要引入另一个小伙伴:fixed
#include <iostream>
#include <iomanip> // 包含 setprecision 的头文件
int main() {
double pi = 3.14159265358979323846;
// 设置精度为 2,并输出3.14
std::cout << std::fixed << std::setprecision(2) << pi << std::endl;
// 设置精度为 5,并输出3.14159
std::cout << std::fixed << std::setprecision(5) << pi << std::endl;
// 设置精度为 10,并输出3.1415926536
std::cout << std::fixed << std::setprecision(10) << pi << std::endl;
return 0;
}
当然了,如果在main函数前用了using namespace std;的话,代码中的std::就可以省去了,不过即便是这样,这种语法明显也比C语言麻烦的多。