C/C++ Ready | Программирование
Фотография
нажмите — покажем
нажмите — покажем
Почему setprecision не всегда означает количество знаков после точки?
В C++ для форматирования дробных чисел часто используют std::setprecision. На первый взгляд кажется, что он задаёт количество цифр после запятой.
Но без std::fixed это не так:
std::cout << std::setprecision(3) << 123.456;
Результат будет не 123.456 с тремя знаками после точки. Поток выведет три значащие цифры:
123
Если нужны знаки после точки, добавляют std::fixed:
std::cout << std::fixed << std::setprecision(3)
<< 123.456;
Теперь результат будет предсказуемым:
123.456
Для маленьких чисел разница ещё заметнее:
std::cout << std::setprecision(2) << 0.012345;
Без fixed поток снова считает значащие цифры и может перейти к компактной форме вывода.
std::setprecision сам по себе управляет точностью, а не обязательно количеством символов после точки.
📣 C++ Ready | #совет
14 · 2.5K ·