使用 cout 在小数点后打印 X 数字

print X number after the decimal point using the cout

提问人:John Oldman 提问时间:1/1/2013 更新时间:1/1/2013 访问量:1776

问:

我有这个代码:

double a = 7.456789;
cout.unsetf(ios::floatfield);
cout.precision(5);
cout << a;

还有这个:

double a = 798456.6;
cout.unsetf(ios::floatfield);
cout.precision(5);
cout << a;

第一个代码的结果是:7.4568 这几乎是我想要的(我想收到的是 7.4567) 第二个结果:7.9846e+05 这根本不是我想要的(我想要 798456.6) 我想将数字打印到小数点后 4 个数字

我该怎么做?

C++ 精度 cout setf

评论

1赞 chris 1/1/2013
我认为没有一种标准方法可以更改打印的舍入。最好将数字放入字符串中。
0赞 John Oldman 1/1/2013
我被告知我可以在这里以 stf 和精度使用来解决这个问题
0赞 wallyk 1/1/2013
为什么要截断数字?如果将其用于其他处理,则可能导致精度损失。若要获得所需的结果,请根据需要计算值,然后打印该值。
0赞 chris 1/1/2013
好吧,你说你想要 7 而不是 8。如果有办法改变这种行为,我不记得了,尽管如果我没记错的话,boost 有类似的东西。

答:

4赞 Remy Lebeau 1/1/2013 #1

通过使用 ,您告诉对浮点值使用其默认格式。由于您想要小数点后的确切位数,因此您应该使用 or 代替,例如:unsetf()coutsetf(fixed)std::fixed

double a = ...;
std::cout.setf(std::fixed, ios::floatfield);
std::cout.precision(5);
std::cout << a;

.

double a = ...;
std::cout.precision(5);
std::cout << std::fixed << a;