2014-02-24 78 views
1

例如即時得到6-12的區域爲三角形,我需要我的輸出顯示006.000需要我的輸出要以這種形式XXX.XXX C++

我知道setprecision會做的伎倆限制的小數位到三個,但我如何將零置於我的解決方案前面?

這是我所擁有的

CTriangle Sides(3,4,5);

cout << std::fixed << std::setprecision(3); 

cout << "\n\n\t\tThe perimeter of this tringle is = " << Sides.Perimeter(); 

cout << "\n\n\t\tThe area of the triangle is  = " << Sides.Area(); 

cout << "\n\n\t\tThe angle one is     = " << Sides.Angleone(); 

cout << "\n\n\t\tThe angle two is     = " << Sides.Angletwo(); 

cout << "\n\n\t\tThe angle three is     = " << Sides.Anglethree(); 

cout << "\n\n\t\tThe altitude one of the triangle = " << Sides.Altitudeone(); 

cout << "\n\n\t\tThe altitude two of the triangle = " << Sides.Altitudetwo(); 

cout << "\n\n\t\tThe altitude three of the triangle = " << Sides.Altitudethree(); 

與輸出是

  The perimeter of this triangle is = 12.000 

      The area of the triangle is  = 6.000 

      The angle one is     = 90.000 

      The angle two is     = 36.870 

      The angle three is     = 53.130 

      The altitude one of the triangle = 2.400 

      The altitude two of the triangle = 6.667 

      The altitude three of the triangle = 3.750 

,但我需要所有的答案是這種形式XXX.XXX不管我的解決方案是什麼。(因爲該值會改變)

任何幫助表示讚賞,謝謝!

回答

3

使用可以使用paddingfilling操縱:

std::setfill('0');    // is persistent 
//... 

cout << std::setw(7) << value; // required for each output 
+0

記得也設置'固定'和'精確' – example

+0

當然,這些是除了提供的代碼 –

+0

這就是它,謝謝一堆 – user3185727

1

printf函數可以爲你做看看文檔: http://www.cplusplus.com/reference/cstdio/printf/

你的情況有些獨特,因爲: (這些是不完整的代碼段,道歉)

精度僅適用於浮點格式:

$ printf("%03.3f\n", 6) 
> 6.000 

而且左填充僅適用於整數格式化:

$ printf("%03.3d\n", 6) 
> 006 

祝你好運希望你可以把它從這裏

+0

'printf'函數來自C,儘管可用,但與C++混合被認爲是不好的。 – Migol

+0

「被認爲是不好的」 - 更具體地說,它們是獨立緩衝的,所以當你每次在使用'printf()'寫入一些東西和寫入'std :: cout'之間切換時,你需要顯式刷新。 +1無論如何 - 這可能會很方便,[boost格式](http://www.boost.org/doc/libs/1_55_0/libs/format/)使用含有類似printf的符號來方便格式化C++意識的方式。 –

2

使用std::internalstd::fixedstd::setfillstd::setwstd::setprecisioniomanip和相關標題,你可以這樣做:

std::cout << std::fixed << std::setfill('0') << std::internal << std::setprecision(3); 

std::cout << std::setw(7); 
std::cout << 12.34f << "\n"; 

並獲得所需的輸出。 See it live on Coliru!