Печать правильного количества десятичных знаков с помощью cout
у меня есть список float значения, и я хочу, чтобы распечатать их с cout С 2 десятичными знаками.
например:
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 ответов:
С
<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
Вы были почти там, нужно использовать 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
setprecision(n)применяется ко всему числу, а не к дробной части. Вам нужно использовать формат с фиксированной точкой, чтобы он применялся к дробной части:setiosflags(ios::fixed)
упростить принятый ответ
упрощенный пример:
#include <iostream> #include <iomanip> int main() { double d = 122.345; std::cout << std::fixed << std::setprecision(2) << d; }и вы получите вывод
122.34ссылки:
У меня была проблема с целыми числами, требуя последовательного форматирования.
переписать для полноты:
#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 }
вы должны установить 'float mode' фиксированной.
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 <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; }
у меня была такая же проблема в конкурсе кодирования, и вот как я справился с ней. Установка точности 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.
просто незначительный момент; поместите следующее в заголовок
использование пространства имен std;
затем
std:: cout
упрощается до
cout
Comments