Печать правильного количества десятичных точек с помощью 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
, похоже, не помогает в этом.)
Ответы
Ответ 1
С <iomanip>
вы можете использовать std::fixed
и std::setprecision
Вот пример
#include <iostream>
#include <iomanip>
int main()
{
double d = 122.345;
std::cout << std::fixed;
std::cout << std::setprecision(2);
std::cout << d;
}
И вы получите выход
122.34
Ответ 2
Вы были почти там, нужно также использовать std:: fixed, см. http://www.cplusplus.com/reference/iostream/manipulators/fixed/
#include <iostream>
#include <iomanip>
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
Ответ 3
setprecision(n)
применяется ко всему числу, а не к дробной части. Вам нужно использовать формат фиксированной точки, чтобы применить его к дробной части: setiosflags(ios::fixed)
Ответ 4
Упростить принятый ответ
Упрощенный пример:
#include <iostream>
#include <iomanip>
int main()
{
double d = 122.345;
std::cout << std::fixed << std::setprecision(2) << d;
}
И вы получите результат
122.34
Справка:
Ответ 5
У меня возникла проблема с целыми числами, если вы хотите согласовать форматирование.
Перепишите для полноты:
#include <iostream>
#include <iomanip>
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
}
Ответ 6
Вы должны установить фиксированный режим "float".
float num = 15.839;
// this will output 15.84
std::cout << std::fixed << "num = " << std::setprecision(2) << num << std::endl;
Ответ 7
У меня была подобная проблема в соревновании по кодированию, и именно так я справился с ней.
Установка точности 2 для всех двойных значений
Сначала добавление заголовка для использования setprecision
#include <iomanip>
Затем добавив следующий код в наш основной
double answer=5.9999;
double answer2=5.0000;
cout<<setprecision(2)<<fixed;
cout <<answer << endl;
cout <<answer2 << endl;
Вывод:
5.99
5.00
Вам нужно использовать исправление для записи 5,00, поэтому ваш выход не будет на 5.00.
Ссылка на короткую ссылку для ссылок, которую я добавляю, что полезно
Ответ 8
Чтобы установить фиксированные 2 цифры после десятичной точки, используйте их в первую очередь:
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
Затем напечатайте двойные значения.
Это пример:
#include <iostream>
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;
}
Ответ 9
#include<stdio.h>
int main()
{
double d=15.6464545347;
printf("%0.2lf",d);
}
Ответ 10
Пользователь вводит плавающее число (например, 345,547778) Выходное значение должно быть 345,54 (не 345,55 без округления, только с точностью до 2 десятичных знаков). Используется setprecision с фиксированной и используемой точностью. Кажется, не работает... help??
Ответ 11
Небольшая точка; поместите в заголовок
следующее:
с использованием пространства имен std;
затем
std:: cout < std:: fixed < std:: setprecision (2) < д;
упрощается до
cout < фиксированный < setprecision (2) < д;
Ответ 12
этот пример использует матрицу.
cout<<setprecision(4)<<fixed<<m[i][j]