Как установить.precision для нескольких переменных в одной cout

У меня есть это в основном:

Product newProduct;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
newProduct.display();

в Product.cpp у меня есть:

cout << "$" << basePrice << " - " 
     << name << " - " << cout.precision(1) << weight << " lbs\n";

но при изменении точности на (1) в.cpp базовая цена также изменяется на (1). Как изменить точность разных переменных в одной и той же метке? есть ли способ? или я просто помещаю их в разные куты? Будет ли это даже работать? Почему или почему нет?

Обновление, когда я пробую второй cout, это добавляет число 2 в конец моей переменной имени. Другими словами, я закончил первый cout после имени переменной. Это работает, но добавляет номер 2 в конце.

1 ответ

Решение

Использовать std::setprecisionвместо манипулятора:

cout << setprecision(2) << "$" << basePrice << " - " 
 << name << " - " << setprecision(1) << weight << " lbs\n";

Число2это возвращаемое значениеcout.precision()функция, которая является текущим значением точности, которая вставляется в поток и, следовательно, выводится.

Редактировать:

Ой, забыл добавить#include <iomanip>,

Изменить 2:

Для полноты см. Этот мой вопрос о том, почему cout.precision() влияет на весь поток при вызове посередине.

Другие вопросы по тегам