Назад Зміст Вперед

Форматований вивід чисел

Маніпулятори потоку

Для форматування виводу дійсних чисел можна використовувати маніпулятори потоку.

Функцію - маніпулятор потоку можна включати в операції поміщення в потік і вилучення з потоку (<<, >>).

В С ++ є ряд маніпуляторів. Розглянемо основні:
МаніпуляторОпис
endl Поміщення в вихідний потік символу кінця рядка '\n'
width(ширина)Встановлює ширину поля виведення
precision(точність) Встановлює кількість значущих цифр у числі (або після коми) в залежності від використання або не використання fixed
fixed Показує, що встановлена точність відноситься до кількості знаків після коми

Приклад встановлення ширини поля виведення

#include <iostream>
using namespace std;

int main()
{
    // Ініціалізація змінних
    double a = -112.234;  // Дробове число з від'ємним знаком
    double b = 4.3981;    // Дробове число з додатним знаком
    int c = 18;           // Ціле число

    // Виведення з встановленням ширини поля 10 символів
    cout.width(10);       // Встановлюємо ширину виведення для наступного елемента
    cout << a << endl;  // Виведення змінної a (вирівнювання праворуч за замовчуванням)

    cout.width(10);       // Встановлюємо ширину виведення знову
    cout << b << endl;  // Виведення змінної b

    cout.width(10);       // Встановлюємо ширину виведення
    cout << c << endl;  // Виведення змінної c

    return 0;             // Завершення програми
}

Ширина поля виводу встановлюється перед виведенням кожної змінної окремо.

В даному прикладі встановлена ширина поля виведення width (10) символів. Якщо число займає менше, то зліва, за замовчуванням, доповнюється пробілами.

Приклад встановлення кількості значущих цифр

#include <iostream>
using namespace std;

int main()
{
    // Ініціалізація змінних
    double a = -112.234;  // Від'ємне число з плаваючою точкою
    double b = 4.3981;    // Додатнє число з плаваючою точкою
    int c = 18;           // Ціле число

    // Виведення з форматуванням
    cout.width(10);       // Встановлюємо ширину поля (10 символів)
    cout.precision(4);    // Встановлюємо точність (4 значущих цифри)
    cout << a << endl;   // Виводимо перше число

    cout.width(10);       // Повторно встановлюємо ширину
    cout << b << endl;   // Виводимо друге число

    cout.width(10);       // Встановлюємо ширину для цілого числа
    cout << c << endl;   // Виводимо ціле число

    return 0;
}

Точність (в даному випадку кількість значущих цифр) встановлюється для виведення всіх змінних.

В даному прикладі встановлено кількість значущих цифр precision (4). Перші два числа округлилися до чотирьох значущих цифр.

Приклад 1 встановлення кількості знаків після точки

#include <iostream>
using namespace std;

int main()
{
    // Ініціалізація змінних
    double a = -112.234;  // Від'ємне число з плаваючою точкою
    double b = 4.3981;    // Додатнє число з плаваючою точкою
    int c = 18;           // Ціле число

    // Налаштування формату виведення
    cout.width(10);       // Ширина поля виведення - 10 символів
    cout.precision(4);    // Точність - 4 знаки (включаючи цілу частину)

    // Виведення значень
    cout << a << endl;  // Виведення з точністю 4 знаки
    cout.width(10);       // Встановлення ширини для наступного виведення
    cout << b << endl;  // Виведення (точність зберігається)
    cout.width(10);       // Встановлення ширини
    cout << c << endl;  // Виведення цілого числа (точність не впливає)

    return 0;
}

Якщо в вихідний потік помістити маніпулятор fixed, то точність буде означати кількість значущих цифр після точки.

В даному прикладі встановлено precision (2) - дві цифри після крапки.

Приклад 2 встановлення кількості знаків після точки

#include <iostream>
using namespace std;

int main()
{
    // Ініціалізація змінних
    double a = -112.234;  // Від'ємне число з плаваючою точкою
    double b = 4.3981;    // Додатнє число з плаваючою точкою
    int c = 18;           // Ціле число

    // Встановлення фіксованого формату для чисел з плаваючою точкою
    cout << fixed;

    // Виведення значень з різними налаштуваннями
    cout.width(10);        // Ширина поля - 10 символів
    cout.precision(2);     // 2 знаки після коми
    cout << a << endl;   // Виведення: "   -112.23"

    cout.width(10);        // Ширина поля - 10 символів
    cout.precision(1);     // 1 знак після коми
    cout << b << endl;   // Виведення: "      4.4"

    cout.width(10);        // Ширина поля - 10 символів
    // Для цілих чисел precision не діє
    cout << c << endl;   // Виведення: "        18"

    return 0;
}

В даному прикладі для першого числа встановлено дві цифри після крапки, а для другого числа одна цифра після крапки.

Назад Зміст Вперед