как установить .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 также изменяет basePrice на (1). Как изменить точность разных переменных в одной и той же метке? есть ли способ? или я просто помещаю их в разные куты? Будет ли это даже работать? Почему или почему нет?

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

0

Решение

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

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

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

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

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

Изменить 2:

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]