如何在C++中正确打印double到cout

Ang*_*uck 2 c++ printing double cout

在发布这个问题之前我已经看了一些问题,找不到我要找的东西,所以如果它是重复的,我很抱歉.

我有这个代码:

cout << "The balance at year " << i << " will be " << char(156) << std::setprecision(2)
     << balance << endl;
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该打印到控制台,如:

£2.00
£100.46
Run Code Online (Sandbox Code Playgroud)

*fyi以上只是示例我知道没有什么可以暗示这些数字,但格式应该是这样的,对吧?

但这是我的输出:

£1e+002
£1.1e+002
Run Code Online (Sandbox Code Playgroud)

它为什么这样做?

据我所知,使用setprecision会显示2个小数位,仅此而已.

哦,并且也注意到几乎没有任何关于打印双打的问题,说使用setprecision实际上表明这需要包括:

#include <iomanip>
Run Code Online (Sandbox Code Playgroud)

Che*_*Alf 5

setprecision 设置精度,位数.

fixed 设置固定格式.

我打赌那会解决它.