Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
JustLearn
C++
2 / 2 / 0
Регистрация: 21.10.2017
Сообщений: 116
1

Setprecision работает не так как хотелось бы

22.08.2018, 21:27. Просмотров 1729. Ответов 4

Как я понимаю функция setprecision определяет сколько знаков после точки должно выводиться. Но на деле происходит иначе.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "");
    cout << setprecision(2) << 123.2356 << endl;
    cout << setw(20) << "Hello there!" << endl;
    _getch();
    return 0;
}
По сути вывод должен быть таким: 123.23
Но он вот такой: 1.2e+02
Как это исправить???
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2018, 21:27
Ответы с готовыми решениями:

setprecision() не работает, или работает не так как нужно
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;...

Код не работает так, как хотелось бы
В книге есть задача с кодом: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; int...

Операция сравнения пошла не так, как хотелось бы
Пользователь вводит значения, сохраняющиеся в класс Product; программа запрашивает слово для поиска...

Функция работает не так как хотелось бы(
хочу попробовать сделать калькульятор на JS . При нажатии на кнопку '1' вызывается функция push() ,...

4
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
6320 / 3072 / 831
Регистрация: 18.10.2014
Сообщений: 5,757
22.08.2018, 21:35 2
Лучший ответ Сообщение было отмечено MrGluck как решение

Решение

Цитата Сообщение от JustLearn Посмотреть сообщение
Как я понимаю функция setprecision определяет сколько знаков после точки должно выводиться.
Нет.

Во-первых, это не "функция", а манипулятор.

Во-вторых, так, как вы описали, манипулятор std::setprecision работает только в форматах std::fixed и std::scientific. В формате std::default (по умолчанию), std::setprecision задает общее количество значащих цифр, а не количество цифр после запятой.

Цитата Сообщение от JustLearn Посмотреть сообщение
Как это исправить???
По-видимому вам нужен формат std::fixed

C++
1
cout << fixed << setprecision(2) << 123.2356 << endl;
Вывод при этом будет 123.24, а не 123.23.
0
JustLearn
C++
2 / 2 / 0
Регистрация: 21.10.2017
Сообщений: 116
22.08.2018, 21:42  [ТС] 3
TheCalligrapher, спасибо, но появился еще вопрос) я в книге прочитал, что формат fixed устанавливает флаг fixed. За что он отвечает?
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
6320 / 3072 / 831
Регистрация: 18.10.2014
Сообщений: 5,757
22.08.2018, 21:45 4
Цитата Сообщение от JustLearn Посмотреть сообщение
я в книге прочитал, что формат fixed устанавливает флаг fixed. За что он отвечает?
Хм... Вот за то и отвечает: при установленном флаге fixed поток вывода будет форматировать данные с плавающей точкой в соответствии с требованиями формата fixed.
0
JustLearn
C++
2 / 2 / 0
Регистрация: 21.10.2017
Сообщений: 116
22.08.2018, 21:52  [ТС] 5
Ясно, спасибо.
0
22.08.2018, 21:52
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2018, 21:52

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Помогите со скриптом на PHP. Он работает, но не так как хотелось бы
Помогите со скриптом на PHP. Он работает,но не так как хотелось бы. Я только учусь PHP. Вот...

JTree оказался не так прост как хотелось бы
Описываю происходящее: По правой кнопке на CustomTree(extends JTree) вызывается компонент...

Как это работает? Хотелось бы реализовать на VB6
http://potrebitel.biz/angel/mk.htm

Что в коде ни так? while не работает так, как ожидаю
Написанный код, как я думаю, должен выдавать цифры от 0 до 1000, столбиком. Но выдает начиная от...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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