2013-03-27 70 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;