Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/907: Рейтинг темы: голосов - 907, средняя оценка - 4.87
 Аватар для Veyron
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578

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

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

Студворк — интернет-сервис помощи студентам
Ну собсно вопрос в теме. заранее спасибо))
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.11.2009, 22:46
Ответы с готовыми решениями:

Дано вещественное число, проверить является ли это число симметричным относительно положения точки до двух знаков после запятой.
Только начинаю программировать на с/с++ и столкнулась с логическими выражениями, простейшие задачи могу решить а в эту никак не могу...

Округлить любое вещественное число до определённого количества знаков с математической точностью
Пишем Microsoft Visual Studio -> Win32 Console Application -> C++. Нужно написать функцию, которая округляет любое вещественное число до...

исправьте ошибку!округлить double до 2-х знаков после запятой
округлять,не используя math.h #include "stdafx.h" #include <stdio.h> int main () { double i; printf ("i="); ...

13
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
12.11.2009, 00:15
Например так:

C++
1
2
3
    double a = 4.6789;
    double b = int(a*100)/100.0;
    cout << b << endl;
2
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3418 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
12.11.2009, 01:26
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Monte-Cristo Посмотреть сообщение
double b = int(a*100)/100.0;
Чтобы действительно округлить, надо

C++
1
b = int(a*100 + 0.5)/100.0;
4
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
12.11.2009, 01:38
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;
}
2
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
12.11.2009, 01:39
Цитата Сообщение от Том Ардер Посмотреть сообщение
Чтобы действительно округлить, надо
Согласен. Но это для математического округления (с учетом последующих знаков). В программировании, лично мой опыт, применял редко. Чаще нужны были результаты округленные в меньшую сторону. Думаю, автор темы применит необходимое ему округление.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
12.11.2009, 01:47
забавно... в 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.
1
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
12.11.2009, 12:59
А при чем здесь B.G. ?
Стандарт (26.5) не предусматривает наличия в заголовке <cmath> функции round.
1
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
12.11.2009, 14:16
картина не меняется - в GCC работает, в Visual Studio не хочет... очередной респект B.G.
Вот это типичный пример как программисты валят ошибки на кого угодно, только не на себя !
А слабо было почитать документацию прежде чем делать выводы ?
Во-первых, в языке C есть функции ceil() & floor().
Во-вторых функция round() относится к стандарту C99.
Visual Studio 2005/2008 не поддерживают.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
12.11.2009, 14:45
Ну тем не менее удобная функция... А ceil и floor не округляют число так, как хотелось бы... Первая округляет до ближайшего большего, вторая до ближайшего меньшего. По поводу сваливания ошибок - так это не то, чтобы ошибка. Скорее облом просто. Ну увидел, что нет этой функции, решил по-другому как-нибудь... А про стандарты разговор отдельный. VS к примеру itoa поддерживает, а она тоже не стандартная... А уж собственных уродцев от майкрософт всех и не перечислить...
1
 Аватар для Veyron
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
12.11.2009, 18:05  [ТС]
Спасибо всем, задачу решил сам, с помощью информатора... ))) Как заметил Monte-Cristo, я не указал, что не округлить, а именно вывести просто с точностью до Н знаков после запятой. Решение такое:

C++
1
2
3
cout.setf(ios::fixed);
cout.precision(n);
cout << p;
здесь n - число знаков после запятой, p - число для вывода.
1
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
12.11.2009, 20:53
Как заметил Monte-Cristo, я не указал, что не округлить, а именно вывести просто с точностью до Н знаков после запятой.
Зачем обманываешь - в теме указано именно откруглить.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
12.11.2009, 20:57
> Зачем обманываешь - в теме указано именно откруглить

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

Добавлено через 1 минуту
Подскажите если я неправильно написал. Просто вся эта возня с умножением, затем делением.
0
192 / 166 / 82
Регистрация: 01.07.2016
Сообщений: 943
24.04.2017, 18:10
Округление до 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;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.04.2017, 18:10
Помогаю со студенческими работами здесь

Как ограничить число знаков после запятой?
надо ограничить число знаков до 4-х после запятой. В x. вот программа, а вівод x конечно в конце: #include &lt;iostream.h&gt; ...

Округлить число до 25 знаков после десятичной точки
Есть простая задача: вот я ее решаю таким способом, т.к в задании написано округлить #include &lt;fstream&gt; #include...

Как правильно ограничить число знаков после запятой при выводе массива
Доброго времени суток. Проблема в следующем - считается обратная матрица, при выводе необходимо ограничить число символов после...

Дано рандомное вещественное число P, найти число M после запятой
1)Дано рандомное вещественное число P, найти число М после запятой, если пользователь задает точность количества чисел после запятой. 2)...

Вывести вещественное число с 4 знаками после запятой
Условие задачи: Введите 4 действительных числа и выведите их сумму с 4 знаками после запятой.


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru