目录
引言
fixed
和 setprecision
是 C++ 中用于控制浮点数输出格式的两个流操纵符,代码开头都需要包含头文件#include <iomanip>。
正常不使用fixed
和 setprecision
的情况:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double largeNum = 123456789.0;
double smallNum = 0.000123456789;
double normalNum = 123.456789;
cout << "Large number:"<< largeNum << endl;
cout << "Small number:"<< smallNum << endl;
cout << "Normal number:"<< normalNum << endl;
return 0;
}
运行结果:
如果不使用任何特定的流操纵符来控制输出,C++ 程序中的浮点数输出将遵循默认的规则和行为。如果数值非常大或非常小,以科学计数法输出。保留有效位至多6位(有效位包括小数点前的位数,如用例Normal number)。
fixed
fixed
是一个流操纵符,用于设置输出流的浮点数显示格式。当应用了 fixed
操纵符后,浮点数将始终以固定小数点格式输出,保留小数点后六位(不是六位有效位),而不是科学计数法。这使得输出的数字更易于阅读和理解,尤其是在需要显示具体小数位数的场合。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double num1 = 123456789.123;
double num2 = 123456789.123456;
double num3 = 123456789.1234567;
cout << fixed << num1 << endl;//输出为 123456789.123000
cout << fixed << num2 << endl;//输出为 123456789.123456
cout << fixed << num3 << endl;//输出为 123456789.123457
return 0;
}
setprecision()
单独使用setprecision(n)
会设置输出流的精度为 n
位有效数字,这意味着输出的数字将尽可能保留 n
位非零数字,如下:
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double largeNum = 123456789.0;
double smallNum = 0.000123456789;
double normalNum = 123.456789;
cout << "Precision set to 3: " << setprecision(3) << largeNum << endl;
cout << "Precision set to 3: " << setprecision(3) << smallNum << endl;
cout << "Precision set to 3: " << setprecision(3) << normalNum << endl;
return 0;
}
组合使用 fixed
和 setprecision()
当这两个操纵符一起使用时,可以精确控制浮点数的输出格式。fixed
确保数字以固定小数点格式输出,而 setprecision
指定小数点后的位数(不是有效位位数)。
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double num = 123456789.123456789;
cout << fixed << setprecision(2) << num << endl; // 输出为 123456789.12
return 0;
}
感谢阅读,欢迎大家指正错误。
创作不易,如果我的文章对你有帮助,请点赞、收藏和关注,您的支持是我前进的最大动力。