【发布时间】:2013-03-27 14:22:30
【问题描述】:
我在发布之前查看了一些问题,但找不到我想要的东西,所以如果它是重复的,我很抱歉。
我有这个代码:
cout << "The balance at year " << i << " will be " << char(156) << std::setprecision(2)
<< balance << endl;
据我所知,这应该打印到控制台上:
£2.00
£100.46
*fyi 以上只是示例,我知道没有什么可以建议这些数字,但格式应该是这样的,对吧?
但这是我的输出:
£1e+002
£1.1e+002
为什么要这样做?
据我了解,使用 setprecision 将显示 2 位小数,仅此而已。
哦,而且几乎没有任何关于打印双打的问题说使用 setprecision 实际上声明这需要包括:
#include <iomanip>
【问题讨论】:
-
您可以通过简单地在
cout行之前写下:double balance = 100.46;来节省一些评论。在 C++ 中,像<iomanip>这样的标头可以包含在其他标准标头中,因此通常不需要显式使用。您假设使用 ISO 8859-1 或 8859-15 代码集;这在短期内是可以的,但最好知道它以后可能会造成麻烦。 -
感谢您的评论,但我通过示例代码进行了简化,因此我没有发布不相关的内容,但没有像将双精度设置为等于数字然后打印那样简单。
-
我打印出来的双精度值是计算的结果,所以它需要在打印时固定它的长度
-
我们都知道您的真实代码更复杂,但您应该瞄准 SSCCE (Short, Self-Contained, Correct Example)。您可以:
#include <iostream> using namespace std; int main() { double balance = 100.457213; cout << "The balance at year " << i << " will be " << char(156) << std::setprecision(2) << balance << endl; }作为完整的可运行程序,不是吗? -
@leffler 是的,我相信我可以,但是对于需要这种简单答案的事情,我真的认为没有必要