ViKo 1 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба Для стандартного округления, если дробная часть больше 0,5 - к целой части прибавляется 1, можно применить формулу: (X + (Y / 2)) / Y Например, 72 / 11 (72 + (11 / 2)) / 11 = 77 / 11 = 7 Если же нужно, чтобы округленное число было не менее того, что округляли, как вычислять? Например, 72 / 5 = 14.4 = 15 Как-то так: X / Y + !!(X % Y) Есть способ иной? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zambezi 0 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба Если же нужно, чтобы округленное число было не менее того, что округляли, как вычислять? Например, 72 / 5 = 14.4 = 15 Отбросить дробную часть и прибавить 1. Или прибавить 0.5 и округлять стандартным способом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Shamil 2 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба Если X и Y целочисленные переменные, то я пишу так: (X + Y - 1) / Y Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба Отбросить дробную часть и прибавить 1. А если делится нацело? Если X и Y целочисленные переменные, то я пишу так: (X + Y - 1) / Y Годится, спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба стандартный способ: (((x <<1)/y)+1)>>1) То есть, считать в формате 14.1 (или 31.1, или 7.1, смотря какая там разрядность), прибавлять 0.5 (в этом формате это число = 1), и потом сдвиг вправо - приведение к формату 15.0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба стандартный способ: (((x <<1)/y)+1)>>1) То есть, считать в формате 14.1 (или 31.1, или 7.1, смотря какая там разрядность), прибавлять 0.5 (в этом формате это число = 1), и потом сдвиг вправо - приведение к формату 15.0 Это дает стандартное округление. А нужно округлить до ближайшего не меньшего целого. Если вместо 1 прибавлять 2, то будет неправильно для деления нацело. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 8 апреля, 2014 Опубликовано 8 апреля, 2014 · Жалоба ну да. сорри, не так вопрос понял. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться