setprecision后恢复原始值?

时间:2015-10-29 06:37:35

标签: c++

我在网上搜索但找不到我需要的内容。

有些人建议使用

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

2 个答案:

答案 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

Run live.