This question already has answers here:
Set back default floating point print precision in C++

(5个答案)


5年前关闭。




我已经在网上搜索了,但是找不到我需要的东西。

有人建议使用
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

最佳答案


为此,必须在使用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';
输出将是这样的:

引用:setprecision
Run live.

关于c++ - setprecision后恢复原始值? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33407444/

10-11 11:24