Перейти к содержанию
    

Округлить число до целого в большую сторону

Для стандартного округления, если дробная часть больше 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)

 

Есть способ иной?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если же нужно, чтобы округленное число было не менее того, что округляли, как вычислять?

Например, 72 / 5 = 14.4 = 15

 

Отбросить дробную часть и прибавить 1. Или прибавить 0.5 и округлять стандартным способом.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отбросить дробную часть и прибавить 1.

А если делится нацело?

 

Если X и Y целочисленные переменные, то я пишу так:

(X + Y - 1) / Y

Годится, спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

стандартный способ:

 

(((x <<1)/y)+1)>>1)

 

То есть, считать в формате 14.1 (или 31.1, или 7.1, смотря какая там разрядность), прибавлять 0.5 (в этом формате это число = 1), и потом сдвиг вправо - приведение к формату 15.0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

стандартный способ:

 

(((x <<1)/y)+1)>>1)

 

То есть, считать в формате 14.1 (или 31.1, или 7.1, смотря какая там разрядность), прибавлять 0.5 (в этом формате это число = 1), и потом сдвиг вправо - приведение к формату 15.0

Это дает стандартное округление. А нужно округлить до ближайшего не меньшего целого. Если вместо 1 прибавлять 2, то будет неправильно для деления нацело.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...