Вывод действительных чисел на C++

Перед выводом действительных чисел (float, double, long double) следует указать выходному потоку точность вывода. Например:

float x; x = 123.456789; cout.setf(ios::fixed); // вывод в фиксированном формате cout.precision(6); // вывод до 6 знака после точки, включительно cout << x;

Однако, данный пример выведет число 123.45787

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

    Количество значащих цифр.
  • float: 7
  • double: 15
  • long double: 19
cout.setf(ios::fixed); // вывод в фиксированном формате cout.precision(2); // вывод до 6 знака после точки, включительно cout << x;

Данный пример выводит при том же значении x число 123.46, что демонстрирует автоматическое округление при выводе.

Настройку параметров можно делать один раз, перед выводом серии чисел. Настройка будет сохранена до ее изменения. Следующий пример выводит 3 действительных числа, каждое с 1 знаком после точки:

x = 123.456789; cout.setf(ios::fixed); cout.precision(1); cout << x << endl; cout << x + 1 << endl; cout << x - 1 << endl;
Последнее изменение: Суббота, 15 Август 2020, 02:34