![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| 88andrey |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 55 Регистрация: 21.4.2007 Репутация: нет Всего: нет |
а если число до точки будет больше int'a то это не пройдет |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: нет Всего: 191 |
Не ну я все понимаю, но не могу понять вот этого , обьясните плз кто шарит
Значит как я понимаю: (int) - это преобразование , затем если x>0 то x + 0.5 иначе x - 0.5 Ну это все при том что х double. и че? расскажите плз как ето работает!! |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
сначала вычисляется выражение в скобках: x > 0 ? x + 0.5 : x - 0.5. Эта конструкция (тернарный оператор) дает x + 0.5, если x > 0, и x - 0.5 во всех остальных случаях. Далее результат преобразовывается к int. Все. поясните, пожалуйста. |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
zkv, возможно, имеется ввиду округление числа типа 1234.56 * 10^58 до 10^59?
|
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
1234.56 * 10^58 == 1.23456 * 10^61, округляем, получаем 10^59? я, вроде, понял, что ты имел ввиду. Я просто объяснил, что было записано в строке int a = (int) (x > 0 ? x + 0.5 : x - 0.5); А сказать наверняка, что имеется ввиду может только автор топика |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
| sgrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 15.4.2006 Репутация: нет Всего: 4 |
есть в с++ стандартные функции округления - floor - вниз и ceil - вверх.
если double всегда будет в области int, то можно просто написать int a = x + 0.5. Если double в вычислениях может быть больше int, то можно сделать x - floor(x), и получить остаток. А там смотреть - больше 0,5 или меньше 0,5 и округлять в нужную сторону. и ещё как codelord написал можно.. только я round функцию не видел в с++.... |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Где-то давно я ее видел... Но мне могло показаться. Или она не-ANSI была. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
юзать тогда int64 -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| sgrey |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 265 Регистрация: 15.4.2006 Репутация: нет Всего: 4 |
||||
|
||||
| Любитель |
|
|||
|
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Угу. Многие производители компилеров добавляют в стандартную библиотеку. Но сие не есть стандарт. |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: нет Всего: 191 |
Да без проблем Нуна 2,368787945646987897564654798 округлить до 2 и ф-ция, кот вы мне порекомендовали не работает(к сожалению). Пэ.Эс. Да и ланно, закрываю тему, уж по-другому давно сделал!!!!!!! Всем спасибо!!!!!! |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
и вы утверждаете, что в результате работы такой программы, у вас не 2 выводится?
порекомендовал вообще то не я, но рекомендацию поддерживаю |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: нет Всего: 191 |
Не совсем так, просто я писал на MFC курсач и там были большие вычисления (от начала до конца строки Просто я попроще вопрос решил задать, т.к. думал, что есть какая-нить стандартная ф-ция для округления, но ее не оказалось. А простые вычисления(типа таких как вы написали) округляются без проблем |
|||
|
||||
| Дмитрий Т |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 16.3.2005 Где: Самара Репутация: 4 Всего: 4 |
round появилась в языке Си в стандарте C99, а в С++ как известно входит только C89 так что этой функции в C++ пока нет. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |