Бьерн Страуструп - Язык программирования С++. Главы 8-10 - Вывод плавающих чисел
ОГЛАВЛЕНИЕ
Страница 55 из 65
10.4.1.6 Вывод плавающих чисел
Вывод вещественных величин также управляется с помощью функций, работающих с состоянием потока. В частности, обращения:cout.setf(ios::scientific,ios::floatfield);установят вид печати вещественных чисел без изменения других компонентов состояния потока. Например:
cout.setf(ios::fixed,ios::floatfield);
cout.setf(0,ios::floatfield); // вернуться к стандартному
cout << 1234.56789 << '\n';напечатает
cout.setf(ios::scientific,ios::floatfield);
cout << 1234.56789 << '\n';
cout.setf(ios::fixed,ios::floatfield);
cout << 1234.56789 << '\n';
1234.57
1.234568e+03
1234.567890
После точки печатается n цифр, как задается в обращении
cout.precision(n)По умолчанию n равно 6. Вызов функции precision влияет на все операции ввода-вывода с вещественными до следующего обращения к precision, поэтому
cout.precision(8);выдаст
cout << 1234.56789 << '\n';
cout << 1234.56789 << '\n';
cout.precision(4);
cout << 1234.56789 << '\n';
cout << 1234.56789 << '\n';
1234.5679
1234.5679
1235
1235
Заметьте, что происходит округление, а не отбрасывание дробной части.
Стандартные манипуляторы, введенные в $$10.4.2.1, предлагают более элегантный способ задания формата вывода вещественных.