我在网上搜索但找不到我需要的内容。
有些人建议使用
streamsize ss = std::cout.precision();
但我无法让它发挥作用。
如何在setprecision之后将double值设置回原始状态?
#include <iostream>
using namespace std;
int main()
{
double a;
cout << "enter a double value: ";
cin >> a;
cout << "your value in 3 decimals is " << setprecision(3) << fixed << a << endl;
cout << "your original value is " << a << endl;
return 0;
}
显然上面的代码不会返回a的原始值。
我的预期输出是:如果用户输入1.267432
your value in 3 decimals is 1.267
your original value is 1.267432
答案 0 :(得分:1)
您可以尝试这样:
#include <iomanip>
#include <iostream>
int main()
{
double a = 1.267432;
std::cout << std::fixed << std::showpoint;
std::cout << std::setprecision(3);
std::cout << a << endl;
return 0;
}
答案 1 :(得分:1)
如何在之后将double值设置回原始状态
setprecision
?
为此,您必须在使用setprecision()
之前获得精确度。在您的问题中,您已经通过以下行提及了它:
streamsize ss = std::cout.precision();
但我无法让它发挥作用。
在这里你如何使用它:
streamsize ss = std::cout.precision();
double a = 1.267432;
std::cout << "a = " << a << '\n';
std::cout.precision (3);
std::cout << "a becomes = " << a << '\n';
std::cout.precision (ss);
std::cout << "Original a= " << a << '\n';
输出结果如下:
a = 1.26743
a = = 1.27
原件a = 1.26743
参考:setprecision。