2013-04-27 3 views
1

Я хотел бы отображать цифры с помощью отступов (при необходимости) и фиксированного количества цифр. Например, учитывая следующие номера:Отображать номера с заполнением и фиксированным числом цифр в C++

48.3 
0.3485 
5.2 

их отображения, как это:

48.30 
00.35 
05.20 

Я пытаюсь комбинации станд :: фиксированной, станд :: заполняющая, зЬй :: setw и станд :: setprecision, но я не могу получить то, что ищу. Хотелось бы получить некоторое руководство!

ПРИМЕЧАНИЕ. 0-прокладка не имеет особого значения, но мне все равно хотелось бы, чтобы числа были выровнены так, что десятичная точка находится в одном столбце.

+0

http://arachnoid.com/cpptutor/student3.html –

ответ

3

Это довольно просто

#include <iostream> 
#include <iomanip> 
using namespace std; 

int main() 
{ 
    cout << fixed << setprecision(2) << setfill('0'); 
    cout << setw(5) << 48.3 << endl; 
    cout << setw(5) << 0.3485 << endl; 
    cout << setw(5) << 5.2 << endl; 
} 

написание кода, как это заставляет меня тосковать по printf однако.

+0

Это прерывается, если setprecision идет слишком высоко. Должно ли setw быть больше, чем setprecision + 3 или что-то еще? – aardvarkk

+0

Если вы хотите две ведущие цифры и десятичную точку, то да, setw должен быть> = setprecision + 3. – john

+0

В качестве дополнительной заметки, я думаю, что большая проблема заключалась в том, что я был (ранее в строке), установив выравнивание с 'std :: left'. Это также испортило это решение, поэтому я должен был установить его обратно в 'std :: right', чтобы это работало. – aardvarkk