C ++ - Почему мой код cout отображает десятичные знаки непоследовательно?

0

Я работаю над приложением, которое должно печатать массив через cout на одной строке и показывать 2 десятичных знака. В настоящее время мой код печатает первые два элемента с двумя десятичными знаками, а затем переключается на 1.

Вот код:

cout << "  Inches ";
    cout << showpoint << setprecision(2) << right;
    for (int i = 0; i < 12; i++)
    {
        cout << setw(5) << precipitation[i];
    }
    cout << endl;

И вот вывод:

Inches 0.72 0.89 2.0 3.0 4.8 4.2 2.8 3.8 2.7 2.1 1.6 1.0

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

благодаря

  • 1
    Какие типы эти переменные?
Теги:
cout
decimal-point

3 ответа

5
Лучший ответ

Вам нужно использовать "фиксированный" режим. В режиме с плавающей запятой по умолчанию precision() задает количество значимых цифр для отображения. В "фиксированном" режиме он задает количество мест после десятичного. Дело в точке:

#include <iostream>
using namespace std;
int main(int argc, char **argv) {
    float pi = 3.14;
    cout.precision(2);
    cout << pi << endl;
    cout << fixed << pi << endl;
}

Выдает вывод:

3.1
3.14

НТН.

  • 0
    Отлично! Спасибо, Кен!
1

Если вы просто добавили cout <<, установленный перед выводами в дополнение к showpoint и setprecision, вы получите согласованное форматирование для всех выходов.

Смотри ниже:

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

int main()
{
    double precipitation[12] = { .72, .89, 2, 3, 4.8, 4.2, 2.8, 3.8, 2.7, 2.1, 1.6, 1 };
    cout << "  Inches ";
    cout << showpoint << fixed << setprecision(2) << right;
    for (int i = 0; i < 12; i++)
    {
        cout << setw(5) << precipitation[i];
    }
    cout << endl;

    return 0;
}

Теперь выход будет выглядеть следующим образом:

Inches  0.72 0.89 2.00 3.00 4.80 4.20 2.80 3.80 2.70 2.10 1.60 1.00
0

Я тоже был обеспокоен этой проблемой. Для этого вам нужно использовать "fixed".

См. Эту ссылку: C++ setprecision (2) печать одного десятичного знака?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню