Показване на числа с подложка и фиксиран брой цифри в C++

Бих искал да показвам числа с помощта на подложка (ако е необходимо) и фиксиран брой цифри. Например, дадени са следните числа:

48.3
0.3485
5.2

Покажете ги така:

48.30
00.35
05.20

Опитвам комбинации от std::fixed, std::fill, std::setw и std::setprecision, но изглежда не мога да получа това, което търся. Ще се радвам на насоки!

ЗАБЕЛЕЖКА: Подпълването 0 не е наистина критично, но все пак бих искал числата да бъдат подравнени така, че десетичната запетая да е в същата колона.


person aardvarkk    schedule 27.04.2013    source източник
comment
arachnoid.com/cpptutor/student3.html   -  person Martin Kristiansen    schedule 27.04.2013


Отговори (1)


Това е доста просто

#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.

person john    schedule 27.04.2013
comment
Това се поврежда, ако setprecision стане твърде висока. Трябва ли setw да е по-голямо от setprecision + 3 или нещо подобно? - person aardvarkk; 27.04.2013
comment
Ако искате две водещи цифри и десетична точка, тогава да, setw трябва да бъде ›= setprecision + 3. - person john; 27.04.2013
comment
Като допълнителна бележка, мисля, че голям проблем беше, че (по-рано в реда) задавах подравняването с std::left. Това също обърква това решение, така че трябваше да се уверя, че го връщам на std::right, за да работи. - person aardvarkk; 03.05.2013
comment
Въпреки че ми липсва printf, харесвам C++ начина, защото мога да го приложа към stringstream и да получа резултата като string - person Everyone; 03.12.2017