36 / 29 / 2
Регистрация: 01.08.2011
Сообщений: 176
|
||||||
1 | ||||||
Округление чисел09.08.2011, 17:44. Показов 111098. Ответов 28
Метки округление (Все метки)
Здравствуйте! Не подскажите, как в си++ округлять числа? Дело в том, что я нашёл в справочнике Герберта Шилдта функции округления - round и trunc. Но когда я их вставил в программу, компилятор заругался. А ещё хотелось бы округлять до сотых, до тысячных и т. д. И ещё, округление типа
0
|
09.08.2011, 17:44 | |
Ответы с готовыми решениями:
28
Округление чисел в C++ Округление чисел С++ Не выполняется округление чисел Программа на с\с++ (округление чисел) |
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
09.08.2011, 17:49 | 3 |
(int)a отбрасыванием дробной части.
0
|
106 / 106 / 11
Регистрация: 17.10.2010
Сообщений: 283
|
|
09.08.2011, 17:51 | 4 |
Округление до ближайшего целого: floor(x + 0.5)
1
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
09.08.2011, 17:53 | 5 |
0
|
106 / 106 / 11
Регистрация: 17.10.2010
Сообщений: 283
|
|
09.08.2011, 18:15 | 6 |
1
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
09.08.2011, 18:32 | 7 |
да, я ошибся, но не со знаком а с функцией. для отрицательных надо ceil(x - 0.5)
Добавлено через 4 минуты floor(x + 0.5) даст неправильный результат при x = -0.5, x = -1.5 и т.д.
2
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
09.08.2011, 18:36 | 9 |
Вариант, но ceil и floor не делают медленного преобразования в целый тип, а такое преобразование не всегда нужно.
Добавлено через 54 секунды правда непонятно, почему x+x
1
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
||||||
09.08.2011, 18:39 | 11 | |||||
По-моему имелось в виду
А, ну да, тогда я просто раскрыл забытые скобки
1
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
09.08.2011, 18:46 | 13 |
А вообще, в C99 для этого определены функции round(), roundf(), roundl(). Только вот беда, С99 мало кем поддерживается.
Добавлено через 2 минуты Как? В соответствии с приоритетом операций сначала сложение (слева), потом сравнение и только потом "?:"
1
|
106 / 106 / 11
Регистрация: 17.10.2010
Сообщений: 283
|
|
09.08.2011, 19:00 | 14 |
Хм, точно. Для моих задач просто было примерно все равно, куда точно -0.5 округлится.
0
|
36 / 29 / 2
Регистрация: 01.08.2011
Сообщений: 176
|
||||||||||||||||
10.08.2011, 13:34 [ТС] | 15 | |||||||||||||||
Итог:
1. Округлять числа отбравыванием дробной части можно так:
Но у 1 пункта есть недостаток: число не должно превышать диапазон значений типа int. Чтобы его обойти, можно округлять так:
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
||||||
10.08.2011, 13:37 | 16 | |||||
Тогда уж так логичнее будет:
0
|
36 / 29 / 2
Регистрация: 01.08.2011
Сообщений: 176
|
|
10.08.2011, 13:50 [ТС] | 17 |
Да, но у меня почему-то на trunc() компилятор ругается. Компилятор Микрософт.
0
|
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
|
|
10.08.2011, 13:56 | 18 |
Виктор_Сен, а зачем второе сравнение? Чем мой вариант плох?
0
|
36 / 29 / 2
Регистрация: 01.08.2011
Сообщений: 176
|
|
10.08.2011, 14:02 [ТС] | 19 |
grizlik78, твой вариант логичнее. Я немного напутал.
0
|
0 / 0 / 0
Регистрация: 26.06.2012
Сообщений: 22
|
|
24.09.2013, 22:15 | 20 |
помогите пожалуйста,мне нужно написать программу которая бы находила абсолютную погрешность каждого числа,затем выполняла цепочку действий с ними и округляла их до двух значащих цифр в числе...
0
|
24.09.2013, 22:15 | |
24.09.2013, 22:15 | |
Помогаю со студенческими работами здесь
20
Округление дробных чисел С++ Округление дробных чисел Округление вещественных чисел Некорректный ввод чисел(округление) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |