【发布时间】:2012-01-23 04:14:17
【问题描述】:
给定一个float类型的变量,如何在C++中使用iostream输出小数点后3位?
【问题讨论】:
标签: c++ floating-point iostream
给定一个float类型的变量,如何在C++中使用iostream输出小数点后3位?
【问题讨论】:
标签: c++ floating-point iostream
【讨论】:
这个确实显示“13.141”
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
double f = 13.14159;
cout << fixed;
cout << setprecision(3) << f << endl;
return 0;
}
【讨论】:
您可以使用iomanip 标头获得固定数量的小数位数(以及许多其他内容)。例如:
#include <iostream>
#include <iomanip>
int main() {
double pi = 3.141592653589;
std::cout << std::fixed << std::setprecision(2) << pi << '\n';
return 0;
}
将输出:
3.14
请注意fixed 和setprecision 都会永久更改流,因此,如果要本地化效果,可以预先保存信息并在之后恢复:
#include <iostream>
#include <iomanip>
int main() {
double pi = 3.141592653589;
std::cout << pi << '\n';
// Save flags/precision.
std::ios_base::fmtflags oldflags = std::cout.flags();
std::streamsize oldprecision = std::cout.precision();
std::cout << std::fixed << std::setprecision(2) << pi << '\n';
std::cout << pi << '\n';
// Restore flags/precision.
std::cout.flags (oldflags);
std::cout.precision (oldprecision);
std::cout << pi << '\n';
return 0;
}
输出是:
3.14159
3.14
3.14
3.14159
【讨论】:
如果要打印精度为小数点后3位的数字,只需在打印数字cout << std::setprecision(3) << desired_number之前添加以下内容即可。不要忘记在您的代码中添加#include <iomanip>。
【讨论】:
一般来说,precision是显示的最大位数。操纵器fixed 将设置输出流以fixed 格式显示值。在 fixed 中,precision 是小数点后的位数。 setprecision 允许设置用于显示浮点值的精度,它需要一个整数参数。
cout << fixed;
cout << setprecision(3) << f << endl;
您可以使用 cout.unsetf(ios::fixed)
取消设置 fixed【讨论】: