Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 115, средняя оценка - 4.82
g-h
67 / 67 / 1
Регистрация: 03.06.2012
Сообщений: 176
#1

setprecision() и setiosflags() - C++

11.06.2012, 19:29. Просмотров 18807. Ответов 9
Метки нет (Все метки)

Почему чтобы напечатать число с двумя цифрами после запятой нужно использовать обе эти функции?
C++
1
cout << setprecision(2) << setiosflags(ios::fixed | ios::showpoint) << 10.0 / 3;
Ведь setprecision(2) и так уже показывает что результат будет с двумя цифрами после десятичной точки.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2012, 19:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос setprecision() и setiosflags() (C++):

Вопрос по setiosflags() и double - C++
У Дейтлов есть код // Рис. 2.9: fig02_09.cpp // Использование повторения с пометкой для вычисления среднего #include&lt;iostream.h&gt; ...

setiosflags(ios::left) - C++
int main() { setlocale(LC_ALL, &quot;Rus&quot;); cout &lt;&lt; setiosflags(ios::left)&lt;&lt; setfill('.') &lt;&lt; setw(10) &lt;&lt; &quot;Фамилия&quot; &lt;&lt; setfill('.')...

setiosflags(ios::left) - C++
Почему setiosflags(ios::right) выравнивает числа по правой стороне а setiosflags(ios::left) не выравнивает по левой? for (int n=1;...

setprecision() - C++
Есть задача: Написать программу выводящую в текстовый файл таблицу значений функций exp(x) и ln(x) на отрезке с шагом 0,2. x выводить...

SETprecision. В чем ошибка? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { int n; long double...

Унарная операция setprecision - C++
Здравствуйте. Манипулятор потока fixed, насколько я понял, нужен для того, чтобы вывести значение с фиксированной точкой. Но почему...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
11.06.2012, 22:31 #2
Можно и без них. Только чтобы напечатать с двумя цифрами после запятой надо писать
setprecision(3)
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
11.06.2012, 22:48 #3
Цитата Сообщение от g-h Посмотреть сообщение
Почему чтобы напечатать число с двумя цифрами после запятой нужно использовать обе эти функции?
Это не функции, это флаги. Один указывает, сколько цифр должно быть после запятой, второй - в каком виде число выводить.

Цитата Сообщение от David Sylva Посмотреть сообщение
Только чтобы напечатать с двумя цифрами после запятой надо писать
setprecision(3)
Да ну?!

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <iomanip>
 
int main() {
    double pi = 3.1415926536;
    
    std::cout << std::setprecision(2) << std::fixed << pi << std::endl;
    std::cout << std::setprecision(2) << std::scientific << pi << std::endl;
    
    return 0;
}
http://codepad.org/3KHLvMYK
0
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
12.06.2012, 00:30 #4
David Sylva, вы же fixed не используете
пример здесь http://www.cplusplus.com/reference/i.../setprecision/
0
David Sylva
1286 / 948 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.06.2012, 00:37 #5
Цитата Сообщение от easybudda Посмотреть сообщение
Да ну?!
setprecision() и setiosflags()
0
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
12.06.2012, 01:33 #6
David Sylva, пост #4 это ответ на #5.
Попробуй вывести 35.14283 — сколько цифр после точки получится?
0
ArtemZ94
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 11
16.06.2014, 07:58 #7
Ну на вопрос же так и не ответили. (как я понял) setprecision(2) выводит число 1384 как 13.84. Для чего присутствие флагов, которые показывают, что в числе будет 2 знака после точки(запятой), когда уже setprecision всё указал. Если писать код без этих флагов что изменится? Может кто-нибудь растолковать их значение? Только не надо кидать ссылки на ресурсы с буржуйским языком.
0
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
16.06.2014, 09:52 #8
Цитата Сообщение от ArtemZ94 Посмотреть сообщение
(как я понял) setprecision(2) выводит число 1384 как 13.84.
Ну а чего стоит взять да и проверить? Если флаги fixed или scientific не использовались, то число 1384 будет выведено как 1.4e+03, потому что setprecision(2) в этом случае задаёт количество значащих десятичных цифр в числе. Если использовать fixed или scientific, то setprecision(2) задаёт количество цифр после точки, то есть вывод будет 1384.00 и 1.38e+03 соответственно. А сами эти флаги выбирают формат представления числа — обычное представление десятичной дроби или научное, с мантиссой и экспонентой...
1
ArtemZ94
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 11
16.06.2014, 10:19 #9
Цитата Сообщение от grizlik78 Посмотреть сообщение
Ну а чего стоит взять да и проверить? Если флаги fixed или scientific не использовались, то число 1384 будет выведено как 1.4e+03, потому что setprecision(2) в этом случае задаёт количество значащих десятичных цифр в числе. Если использовать fixed или scientific, то setprecision(2) задаёт количество цифр после точки, то есть вывод будет 1384.00 и 1.38e+03 соответственно. А сами эти флаги выбирают формат представления числа — обычное представление десятичной дроби или научное, с мантиссой и экспонентой...
А showpoint для чего? Без него и так выводит 1384.00
0
grizlik78
Эксперт С++
1913 / 1445 / 113
Регистрация: 29.05.2011
Сообщений: 3,001
16.06.2014, 10:28 #10
Это для случая, когда не используются флаги fixed или scientific. Если задать setprecision(5), то можно получить 1384.0 или 1384, в зависимости от использования флага showpoint.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2014, 10:28
Привет! Вот еще темы с ответами:

Манипуляторы setprecision и fixed - C++
Как работают эти манипуляторы? Почему с fixed и без fixed выводит по-разному? #include &lt;iostream&gt; #include &lt;iomanip&gt; using...

Использование манипулятора setprecision - C++
Какой вариант более правильный. Вычислить значение выражения, включающего 5 членов: Y=(π+3)^2+(π+6)^3+(π+9)^4+... 1.вариант ...

setprecision() не работает, или работает не так как нужно - C++
cout &lt;&lt; setw(5) &lt;&lt; &quot;X=&quot; &lt;&lt; setprecision(2) &lt;&lt; X; cout &lt;&lt; setw(20) &lt;&lt; &quot;X=&quot; &lt;&lt; setprecision(0)&lt;&lt; X &lt;&lt; endl; cout &lt;&lt; setw(5) &lt;&lt; &quot;Y=&quot; &lt;&lt;...

Два манипулятора fixed и setprecision() в CLI Windows Forms - C++/CLI WinForms
Подскажите пожалуйста, возможно ли использование в CLI Windows Forms, таких манипуляторов как fixed и setprecision().Немного теории (fixed ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.06.2014, 10:28
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru