Мне больше нравится ответ Рэнди Проктора. Здесь более подробно:
Если вы хотите сделать реальное округление (т.е. 3/2 -> 2, но 17/7 -> 2) с целыми числами> 0: использование (dividend + (divisor/2))/divisor
вместо dividend/divisor
.
Если дивиденд может быть любым целым числом (т. Е. Отрицательным): (dividend >= 0) ? ((dividend + divisor/2)/divisor) : ((dividend - divisor/2)/divisor)
.
Если дивиденд представляет собой любое целое число и делитель любого целого числа, но 0: (dividend >= 0) ? ((dividend + Math.abs(divisor)/2)/divisor) : ((dividend - Math.abs(divisor)/2)/divisor)
.
(Обратите внимание, что добавление и вычитание могут привести к обволакивающему, что в противном случае не будет происходить, рендеринг результата неверен.)
Спасибо каждому, –
Вы ищете только округление 0,5 до? или округление 0,3 и т. д.? – jvenema
@jvenema: Точно - большинство предлагаемых решений предполагают, что что-либо более 1.0 должно округлить до 2. Например, 7/3 равно 2.333, но будет округлено до 3. Однако, учитывая пример из OP, неясно, желаемо ли это или нет. – GalacticCowboy