Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2009, 04:42   #1
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию Округление частного int'ов. С++

Вновь здравствуйте!
Сижу уже третий час отлавливаю ошибку и вдруг замечаю, что функции floor и ceil работают как-то не так, как я ожидал.

Покопавшись, вот что я обнаружил:

Цитата:
int x = 114990;
int y = 1000;

cout << ceil(x/y) << endl;
cout << ceil(114.99);
На экран выводится:

114
115. Хотя результат должен быть одинаковым.
Проблема, вероятно в том, что частное х и у надо перевести во float. Но при переводе у меня теряется дробная часть.
Собственно вот.
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Старый 23.08.2009, 06:24   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Что-то я в упор не замечаю дробной части у вас в int значениях.
Только частное вы врядли переведете, лучше всего переводить оба числа во float, а потом уже делить и округлять.
MaTBeu вне форума Ответить с цитированием
Старый 23.08.2009, 10:14   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,091
По умолчанию

cout << ceil((float)x/y) << endl; а так получается, что x/y возвращает целое число и округлять там уже нечего
pu4koff вне форума Ответить с цитированием
Старый 23.08.2009, 16:17   #4
Парсифаль
Форумчанин
 
Аватар для Парсифаль
 
Регистрация: 28.04.2009
Сообщений: 186
По умолчанию

Спасибо. Так получилось.
Я вчера все-таки как-то смог решить эту проблему, таким способом, как говорил Матвей, переведя оба числа во float. А вот с (float) я пробовал - не выходило.
Ruft ihm es zu durch alle Land', Der durch dies Wunder Gnade fand!
Hoch uber aller Welt ist Gott, Und Sein Erbarmen ist kein Spott
Парсифаль вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Округление чисел Vikelf Помощь студентам 1 01.06.2009 12:16
С++ Создать класс содержащий 3х-мерный массив int'ов, заполнять с помощью генератора случайных чисел vipER Помощь студентам 1 22.09.2007 22:08
округление в Firebird shurik_7866 БД в Delphi 0 05.07.2007 11:10
округление Toxa Общие вопросы Delphi 4 15.01.2007 19:15