Печать правильного количества десятичных точек с помощью cout

У меня есть список значений float и я хочу напечатать их с помощью cout с двумя десятичными знаками.

Например:

 10.900 should be printed as 10.90 1.000 should be printed as 1.00 122.345 should be printed as 122.34 

Как я могу это сделать?

( setprecision , похоже, не помогает в этом).

11 Solutions collect form web for “Печать правильного количества десятичных точек с помощью cout”

С помощью вы можете использовать std::fixed и std::setprecision

Вот пример

 #include  #include  int main() { double d = 122.345; std::cout < < std::fixed; std::cout << std::setprecision(2); std::cout << d; } 

И вы получите результат

 122.34 

Вы были почти там, нужно также использовать std :: fixed, см. http://www.cplusplus.com/reference/iostream/manipulators/fixed/

 #include  #include  int main(int argc, char** argv) { float testme[] = { 0.12345, 1.2345, 12.345, 123.45, 1234.5, 12345 }; std::cout < < std::setprecision(2) << std::fixed; for(int i = 0; i < 6; ++i) { std::cout << testme[i] << std::endl; } return 0; } 

выходы:

 0.12 1.23 12.35 123.45 1234.50 12345.00 

setprecision(n) применяется ко всему числу, а не к дробной части. Вам нужно использовать формат фиксированной точки, чтобы применить его к дробной части: setiosflags(ios::fixed)

Упростить принятый ответ

Упрощенный пример:

 #include  #include  int main() { double d = 122.345; std::cout < < std::fixed << std::setprecision(2) << d; } 

И вы получите результат

 122.34 

Справка:

  • std::fixed
  • std::setprecision

У меня возникла проблема с целыми числами, требуя последовательного форматирования.

Перепишите для полноты:

 #include  #include  int main() { // floating point formatting example double d = 122.345; cout < < std::fixed << std::setprecision(2) << d << endl; // Output: 122.34 // integer formatting example int i = 122; cout << std::fixed << std::setprecision(2) << double(i) << endl; // Output: 122.00 } 

Вы должны установить фиксированный режим «float».

 float num = 15.839; // this will output 15.84 std::cout < < std::fixed << "num = " << std::setprecision(2) << num << std::endl; 

Чтобы установить фиксированные 2 цифры после десятичной точки, используйте их сначала:

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

Затем распечатайте двойные значения.

Это пример:

 #include  using std::cout; using std::ios; using std::endl; int main(int argc, char *argv[]) { cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); double d = 10.90; cout < < d << endl; return 0; } 

У меня была подобная проблема в соревновании по кодированию, и именно так я справился с этим. Установка точности 2 для всех двойных значений

Сначала добавление заголовка для использования setprecision

#include

Затем добавив следующий код в нашу основную

  double answer=5.9999; double answer2=5.0000; cout<  

Вывод:

 5.99 5.00 

Вам нужно использовать исправление для записи 5,00, поэтому ваш выход не будет на 5.00.

Краткая ссылка для ссылки, которую я добавляю, которая полезна

Небольшая точка; поместите следующее в заголовок

использование пространства имен std;

тогда

std :: cout < < std :: fixed << std :: setprecision (2) << d;

упрощается

cout < < fixed << setprecision (2) << d;

 #include int main() { double d=15.6464545347; printf("%0.2lf",d); } 

это пример с использованием матрицы.

 cout<  
  • Команды командной строки запуска
  • Что происходит быстрее, итерации вектора STL с помощью vector :: iterator или с at ()?
  • Создание структуры составных ключевых объектов
  • Рекурсивный список сглаживания
  • Получить IP-адрес локального компьютера
  • Корпоративная библиотека Unity vs Other IoC Containers
  • Как читать цвет пикселя экрана
  • ICollection Vs List в платформе Entity Framework
  • Является ли DateTime.Now лучшим способом измерения производительности функции?
  • Правильная реализация кубической сплайновой интерполяции
  • C #: зачем подписывать сборку?
  • Давайте будем гением компьютера.