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

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

Войти
Регистрация
Восстановить пароль
 
Veyron
106 / 106 / 4
Регистрация: 02.06.2009
Сообщений: 579
#1

Как округлить в С++ вещественное число до 2 знаков после запятой? - C++

11.11.2009, 22:46. Просмотров 41006. Ответов 13
Метки нет (Все метки)

Ну собсно вопрос в теме. заранее спасибо))
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2009, 22:46     Как округлить в С++ вещественное число до 2 знаков после запятой?
Посмотрите здесь:
C++ Дано вещественное число, проверить является ли это число симметричным относительно положения точки до двух знаков после запятой.
Округлить любое вещественное число до определённого количества знаков с математической точностью C++
исправьте ошибку!округлить double до 2-х знаков после запятой C++
Как ограничить число знаков после запятой? C++
C++ Округлить число до 25 знаков после десятичной точки
Как правильно ограничить число знаков после запятой при выводе массива C++
C++ Дано рандомное вещественное число P, найти число M после запятой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
12.11.2009, 00:15     Как округлить в С++ вещественное число до 2 знаков после запятой? #2
Например так:

C++
1
2
3
    double a = 4.6789;
    double b = int(a*100)/100.0;
    cout << b << endl;
Том Ардер
Модератор
Эксперт по математике/физике
3736 / 2349 / 293
Регистрация: 15.06.2009
Сообщений: 4,202
12.11.2009, 01:26     Как округлить в С++ вещественное число до 2 знаков после запятой? #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
double b = int(a*100)/100.0;
Чтобы действительно округлить, надо

C++
1
b = int(a*100 + 0.5)/100.0;
easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,507
12.11.2009, 01:38     Как округлить в С++ вещественное число до 2 знаков после запятой? #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using std::cout;
using std::endl;
#include <math.h>
 
int main(){
    double a = 3.485, b = 4.512;
    cout << "\nBefor rounding:" << endl;
    cout << "a = " << a << "\tb = " << b << endl;
    
    a = round(a * 100.0) / 100.0;
    b = round(b * 100.0) / 100.0;
    cout << "\nAfter rounding:" << endl;
    cout << "a = " << a << "\tb = " << b << endl;
    
    return 0;
}
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
12.11.2009, 01:39     Как округлить в С++ вещественное число до 2 знаков после запятой? #5
Цитата Сообщение от Том Ардер Посмотреть сообщение
Чтобы действительно округлить, надо
Согласен. Но это для математического округления (с учетом последующих знаков). В программировании, лично мой опыт, применял редко. Чаще нужны были результаты округленные в меньшую сторону. Думаю, автор темы применит необходимое ему округление.
easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,507
12.11.2009, 01:47     Как округлить в С++ вещественное число до 2 знаков после запятой? #6
забавно... в GCC round(double) нормально работает, а мелкомягкий cl в упор его в math.h не видит... если так написать:
C++
1
2
3
4
5
#include <iostream>
#include <cmath>
using namespace std;
int main(){
...
картина не меняется - в GCC работает, в Visual Studio не хочет... очередной респект B.G.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,365
12.11.2009, 12:59     Как округлить в С++ вещественное число до 2 знаков после запятой? #7
А при чем здесь B.G. ?
Стандарт (26.5) не предусматривает наличия в заголовке <cmath> функции round.
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
12.11.2009, 14:16     Как округлить в С++ вещественное число до 2 знаков после запятой? #8
картина не меняется - в GCC работает, в Visual Studio не хочет... очередной респект B.G.
Вот это типичный пример как программисты валят ошибки на кого угодно, только не на себя !
А слабо было почитать документацию прежде чем делать выводы ?
Во-первых, в языке C есть функции ceil() & floor().
Во-вторых функция round() относится к стандарту C99.
Visual Studio 2005/2008 не поддерживают.
easybudda
Эксперт CЭксперт С++
9470 / 5483 / 927
Регистрация: 25.07.2009
Сообщений: 10,507
12.11.2009, 14:45     Как округлить в С++ вещественное число до 2 знаков после запятой? #9
Ну тем не менее удобная функция... А ceil и floor не округляют число так, как хотелось бы... Первая округляет до ближайшего большего, вторая до ближайшего меньшего. По поводу сваливания ошибок - так это не то, чтобы ошибка. Скорее облом просто. Ну увидел, что нет этой функции, решил по-другому как-нибудь... А про стандарты разговор отдельный. VS к примеру itoa поддерживает, а она тоже не стандартная... А уж собственных уродцев от майкрософт всех и не перечислить...
Veyron
106 / 106 / 4
Регистрация: 02.06.2009
Сообщений: 579
12.11.2009, 18:05  [ТС]     Как округлить в С++ вещественное число до 2 знаков после запятой? #10
Спасибо всем, задачу решил сам, с помощью информатора... ))) Как заметил Monte-Cristo, я не указал, что не округлить, а именно вывести просто с точностью до Н знаков после запятой. Решение такое:

C++
1
2
3
cout.setf(ios::fixed);
cout.precision(n);
cout << p;
здесь n - число знаков после запятой, p - число для вывода.
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
12.11.2009, 20:53     Как округлить в С++ вещественное число до 2 знаков после запятой? #11
Как заметил Monte-Cristo, я не указал, что не округлить, а именно вывести просто с точностью до Н знаков после запятой.
Зачем обманываешь - в теме указано именно откруглить.
Evg
Эксперт CАвтор FAQ
17547 / 5785 / 370
Регистрация: 30.03.2009
Сообщений: 15,934
Записей в блоге: 26
12.11.2009, 20:57     Как округлить в С++ вещественное число до 2 знаков после запятой? #12
> Зачем обманываешь - в теме указано именно откруглить

Он не обманывает, а исправляет собственную неточность
ЮрийМ
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 2
24.04.2017, 17:52     Как округлить в С++ вещественное число до 2 знаков после запятой? #13
Помню можно было при помощи управляющих символов округлять число. Выглядело это так:
printf ("\f0.2", e) //отображает вещественную переменную "e" с двумя знаками после запятой

Добавлено через 1 минуту
Подскажите если я неправильно написал. Просто вся эта возня с умножением, затем делением.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2017, 18:10     Как округлить в С++ вещественное число до 2 знаков после запятой?
Еще ссылки по теме:
Число знаков после запятой C++
Как вывести double до 2 знаков после запятой? C++
C++ Как отображать у double больше знаков после запятой?
C++ Как в языке С++ вывести значение изменения с точностью k знаков после запятой?
Количество знаков после запятой C++

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

Или воспользуйтесь поиском по форуму:
no swear
53 / 54 / 24
Регистрация: 01.07.2016
Сообщений: 401
Завершенные тесты: 1
24.04.2017, 18:10     Как округлить в С++ вещественное число до 2 знаков после запятой? #14
Округление до 2 знаков.
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    double a = 1.2355;
    cout << setprecision(3) << a;
}
Yandex
Объявления
24.04.2017, 18:10     Как округлить в С++ вещественное число до 2 знаков после запятой?
Ответ Создать тему
Опции темы

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