Модуль: (C++) Вещественные числа


Задача

4/10

Ввод и вывод вещественных чисел

Теория Нажмите, чтобы прочитать/скрыть

Ввод вещественных чисел

Ввести несколько вещественных переменных из стандартного входного потока (обычно с клавиатуры) и записать их в переменные можно с использованием cin:
double x, y;
cin >> x >> y;
Оператор >> используется для извлечения данных из потока ввода cin. Первое число будет сохранено в переменную x, второе - в y. Числа можно вводить с клавиатуры как в одну строку через пробел, так и каждое на отдельной строке. Оператор << определен (перегружен) для работы с разными типами данных. 


Вывод вещественных чисел

Для вывода данных на экран (консоль) используется cout.  Оператор << позволяет направлять данные в стандартный поток вывода cout (обычно на консоль). Оператор << определен (перегружен) для работы с разными типами данных. 

По умолчанию, при выводе вещественных чисел с помощью cout, используются правила округления, определенные стандартом языка C++. Обычно используется округление до ближайшего значащего разряда (round-to-nearest). Если десятичная часть числа находится на середине между двумя возможными округлениями, то округление происходит к четному значению (так называемое "банковское округление"). Например:

#include <iostream>

using namespace std;

int main()
{
    cout << 3.123445 << endl;   # выведет 3.12344 (endl - переводит курсор на новую строку)
    cout << 3.14159 << endl;    # выведет 3.14159
    cout << 123457.5 << endl;   # выведет 123458
    cout << 12345678.9 << endl;       # выведет 1.23457e+07
    cout << 0.000000123456 << endl;   # выведет 1.23456e-07
    return 0;
}

Вещественное числа могут быть выведены как числа с фиксированной точностью (первые три числа из примера выше) и как число с плавающей точкой (четвертое и пятое числа из примера). 
Если в записи числа много цифр, то cout выводит только 6 цифр. Если число очень большое (больше 6 цифр в целой части) или очень маленькое (как пятое число из примера), то оно будет выведено в формате с плавающей точкой (в научном формате).

Форматом вывода вещественных чисел можно манипулировать, используя различные манипуляторы. Используя различные комбинации манипуляторов и функций форматирования, можно настроить вывод вещественных чисел в C++ в соответствии с нужными требованиями. Чтобы работать с манипуляторами необходимо подключить библиотеку iomanip.

Наиболее часто используемые манипуляторы вывода: 
1. fixed: Этот манипулятор выводит числа с фиксированной точностью после десятичной точки (выводит по умолчанию 6 знаков после запятой).

double number = 3.1415987;
cout << fixed << number << endl;   # 3.141599

2. scientific: Этот манипулятор выводит числа в экспоненциальной форме (научном формате, формате с плавающей точкой).
double number = 1234.56789; 
cout << scientific << number << endl;   # 1.234568e+03

3. setprecision(n): Этот манипулятор устанавливает точность вывода чисел на n знаков после десятичной точки. 
double number = 3.14159; 
cout << fixed << setprecision(2) << number << endl;   # 3.14

4. setw(n) и left: Эти манипуляторы позволяют установить ширину поля вывода и выравнивание (в данном случае, влево). 
double number = 123.456; 
cout << setw(10) << left << number << endl;   # 123.456___
 
Пример
#include <iomanip> ... 
double x = 1.0/6;       
cout << fixed << setprecision (9); 
cout << setw(12) << x << endl;
Фрагмент программы выведет _0.166666672

Все команды можно записать и в одну строчку:
cout << fixed << setprecision(9) << setw(12) << x << endl;

Задача

Выполните задания по порядку: 
1. в 8-й строке оформите вывод переменной y в формате с фиксированной точкой, с количеством знаков в дробной части по умолчанию;
2. в 9-й строке оформите вывод переменной y в формате с фиксированной точкой, чтобы выводилось все число в 10 позициях, при этом на дробную часть отводилось 4 знака;
3. в 10-й строке оформите вывод переменной y , чтобы число выводилось в научном формате с тремя цифрами в дробной части.
Каждый оператор вывода должен выводить число с новой строки.