математика — нужен мой вывод, чтобы быть в этом виде XXX.XXX переполнение стека

например, я получаю область 6 для треугольника, мне нужно, чтобы мой вывод показал 006.000

я знаю, что 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, независимо от того, каковы мои решения. (потому что значения будут меняться)

любая помощь приветствуется, спасибо!

1

Решение

Использование можно использовать набивка а также заполнение манипуляторы:

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

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

Другие решения

С помощью std::internal, std::fixed, std::setfill, std::setw а также std::setprecision от iomanip и связанные заголовки, вы можете сделать:

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

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

и получить желаемый результат. Смотрите это в прямом эфире на Coliru!

2

Функция printf может сделать это для вас, посмотрите на документы:
http://www.cplusplus.com/reference/cstdio/printf/

Ваш случай несколько уникален, потому что:
(это не полные фрагменты кода, извинения)

Точность относится только к форматированию с плавающей запятой:

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

А отступ слева применяется только к целочисленному форматированию:

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

Удачи, надеюсь, вы можете взять его отсюда

1
По вопросам рекламы [email protected]