В Си у нас есть такое утверждение:
printf("%6.3f ",floatNumber);
который ограничивает количество цифр при печати.
Как я могу добиться аналогичного поведения в C++
? я знаю setprecision
но это не поможет мне сделать то же самое.
Чтобы получить формат, аналогичный указанному %6.3f
используя только стандартные манипуляторы iostream, вы можете сделать:
std::cout << std::fixed << std::setw(6) << std::setprecision(3) << f;
конкретно std::fixed
указывает тот же основной формат, что и f
в строке формата, так что, например, «точность» означает то же самое и для строки формата, и для ostream. std::setprecision(3)
затем на самом деле устанавливает точность и std::setw(6)
устанавливает ширину поля. Без настройки std::fixed
вы получите формат, аналогичный указанному в строке формата "%6.3g"
,
Обратите внимание, что кроме setw
эти манипуляторы липкие. То есть они остаются в силе после вывода одной переменной.
Ваш лучший вариант будет использовать boost::format
, Увидеть документация, особенно примеры
Следующий лучший (если вы не можете использовать boost
в вашем проекте), чтобы продолжать использовать printf
, Это часть стандартной библиотеки C ++, поэтому она должна «просто работать», пока вы #include <stdio.h>
как всегда