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

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

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

setprecision() и setiosflags() - C++

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

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

Вопрос по 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, насколько я понял, нужен для того, чтобы вывести значение с фиксированной точкой. Но почему...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
11.06.2012, 22:31     setprecision() и setiosflags() #2
Можно и без них. Только чтобы напечатать с двумя цифрами после запятой надо писать
setprecision(3)
easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,505
11.06.2012, 22:48     setprecision() и setiosflags() #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
MrCold
854 / 752 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
12.06.2012, 00:30     setprecision() и setiosflags() #4
David Sylva, вы же fixed не используете
пример здесь http://www.cplusplus.com/reference/i.../setprecision/
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
12.06.2012, 00:37     setprecision() и setiosflags() #5
Цитата Сообщение от easybudda Посмотреть сообщение
Да ну?!
setprecision() и setiosflags()
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
12.06.2012, 01:33     setprecision() и setiosflags() #6
David Sylva, пост #4 это ответ на #5.
Попробуй вывести 35.14283 — сколько цифр после точки получится?
ArtemZ94
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 11
16.06.2014, 07:58     setprecision() и setiosflags() #7
Ну на вопрос же так и не ответили. (как я понял) setprecision(2) выводит число 1384 как 13.84. Для чего присутствие флагов, которые показывают, что в числе будет 2 знака после точки(запятой), когда уже setprecision всё указал. Если писать код без этих флагов что изменится? Может кто-нибудь растолковать их значение? Только не надо кидать ссылки на ресурсы с буржуйским языком.
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
16.06.2014, 09:52     setprecision() и setiosflags() #8
Цитата Сообщение от ArtemZ94 Посмотреть сообщение
(как я понял) setprecision(2) выводит число 1384 как 13.84.
Ну а чего стоит взять да и проверить? Если флаги fixed или scientific не использовались, то число 1384 будет выведено как 1.4e+03, потому что setprecision(2) в этом случае задаёт количество значащих десятичных цифр в числе. Если использовать fixed или scientific, то setprecision(2) задаёт количество цифр после точки, то есть вывод будет 1384.00 и 1.38e+03 соответственно. А сами эти флаги выбирают формат представления числа — обычное представление десятичной дроби или научное, с мантиссой и экспонентой...
ArtemZ94
0 / 0 / 0
Регистрация: 08.06.2014
Сообщений: 11
16.06.2014, 10:19     setprecision() и setiosflags() #9
Цитата Сообщение от grizlik78 Посмотреть сообщение
Ну а чего стоит взять да и проверить? Если флаги fixed или scientific не использовались, то число 1384 будет выведено как 1.4e+03, потому что setprecision(2) в этом случае задаёт количество значащих десятичных цифр в числе. Если использовать fixed или scientific, то setprecision(2) задаёт количество цифр после точки, то есть вывод будет 1384.00 и 1.38e+03 соответственно. А сами эти флаги выбирают формат представления числа — обычное представление десятичной дроби или научное, с мантиссой и экспонентой...
А showpoint для чего? Без него и так выводит 1384.00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.06.2014, 10:28     setprecision() и setiosflags()
Еще ссылки по теме:

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

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

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;...


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

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
16.06.2014, 10:28     setprecision() и setiosflags() #10
Это для случая, когда не используются флаги fixed или scientific. Если задать setprecision(5), то можно получить 1384.0 или 1384, в зависимости от использования флага showpoint.
Yandex
Объявления
16.06.2014, 10:28     setprecision() и setiosflags()
Ответ Создать тему
Опции темы

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