2013-03-27 85 views
2

我在发帖之前查看了一些问题,但找不到我要找的内容,所以如果是重复的,我很抱歉。如何在C++中正确地打印一个双引号给对方

我有这样的代码:

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

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

£2.00 
£100.46 

*仅供参考上面只是一个例子,我知道有什么建议那些数字,但格式应该是这样的,对吧?

但这里是我的输出:

£1e+002 
£1.1e+002 

为什么这样做呢?

这是我的理解,使用setprecision将显示2位小数,仅此而已。

哦,也注意到几乎没有关于打印双打提到使用setprecision实际上指出,这需要包括任何疑问:

#include <iomanip> 
+0

您可以通过简单地写保存自己的一些评论:'双平衡= 100.46;'了'cout'前行。在C++中,像''这样的头文件可以被其他标准头文件包含在内,所以显式使用通常是不必要的。您正在假设ISO 8859-1或8859-15代码集;这在短期内是可以的,但也可以知道它可能会在以后造成麻烦。 – 2013-03-27 14:29:53

+0

感谢您的评论,但我简化了示例代码,以便我不张贴不相关的东西,但没有它不像设置双等于一个数字,然后只是打印那么简单。 – AngryDuck 2013-03-27 14:33:18

+0

我的双倍数值即时打印输出是计算的结果,所以它需要将其长度固定在打印上 – AngryDuck 2013-03-27 14:34:12

回答

5

setprecision设置精度,位数。

fixed设置固定格式。

我敢打赌,它会解决它。

+0

非常感谢,现在不适当的尝试,然后给予最好的答案,如果它的工作 – AngryDuck 2013-03-27 14:25:25

+0

非常感谢,现在工作不好接受答案,任何机会对这个问题的一些投票,以便其他人可能首先在这里被绘制,一个很多其他的答案实际上并没有说这个或包括,因此为什么我把“正确”的标题 – AngryDuck 2013-03-27 14:28:06

3

使用std::fixed来设置固定格式,而不是科学记数法。

cout << "The balance at year " << i << " will be " << char(156) << std::setprecision(2) << std::fixed << balance << endl;

2

做这样的:

cout << "The balance at year " << i << " will be " << char(156) << std::setprecision(2) << std::fixed << balance << endl;