Печать правильного количества десятичных точек с помощью 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 , похоже, не помогает в этом).

С помощью вы можете использовать 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< 
  • Страница HTTP 404 не найдена в Web Api, размещенной в IIS 7.5
  • Как запустить консольное приложение .NET в фоновом режиме
  • Как получить количество символов в std :: string?
  • C / C ++ printf () перед вызовом scanf ()
  • Как я могу использовать массив указателей функций?
  • C # => оператор?
  • Каковы преимущества относительного пути, например «../include/header.h» для заголовка?
  • Что такое «обратный вызов» на C и как они реализованы?
  • Почему в отдельных циклах стигментные добавления намного быстрее, чем в комбинированном цикле?
  • Как установить перечисление в null
  • Как использовать инструкции Fused Multiply-Add (FMA) с SSE / AVX
  • Давайте будем гением компьютера.