2015-07-20 2 views
1

Кажется, что Рубин выбирает круглые отрицательные числа вниз, а не ближе к нулю.Раунд вверх, а не вниз, когда ниже нуля

-1.5.round 
#=>-2 

Принимая во внимание положительные числа работают по-другому:

2.5.round 
#=>3 

Как округлить до отрицательных чисел (ближе к нулю) вместо округления их? Я использую Ruby версии 2.2.2.

+0

Перечислите вашу версию Ruby. – onebree

+1

Первый вопрос - почему вы хотите это сделать? Существуют десятки методологий округления, каждый со своими плюсами и минусами, поэтому знание вашей цели здесь было бы идеальным. Хорошая функция округления округляет половину чисел вверх и вниз, чтобы она не сильно искажала средние значения или суммы. – tadman

+0

@tadman Я хочу округлить большое количество пар. Я разделяю два, а затем я делаю результат. Однако, если результат оказывается отрицательным, он округляется, а не вверх. Мне кажется нелогичным, и я хочу это исправить. –

ответ

3

Это должно сработать.

> (-1.5+0.5).floor 
=> -1 
> (-1.4+0.5).floor 
=> -1 
> (-1.6+0.5).floor 
=> -2 
+1

Есть ли встроенный Ruby-метод, который контролирует округление отрицательного числа до симпатии OP? Есть ли драгоценный камень, который он мог бы использовать? – onebree

+1

Вы всегда можете расширить встроенный класс с помощью собственного метода 'fancy_roundy'. Использование коэффициента смещения, как показано здесь, как правило, приближается. – tadman

0

Может быть, вы должны сделать некоторые подстраивается к раунду, как вы хотите:

def roundy(x) 
    x.to_i 
    if x<0 
    puts (x. + 0.1).round 
    else puts x.round 
    end 
end 
Смежные вопросы