Как установить переменную для разделения и округления до 0 знаков после запятой?

В Ruby, как я могу сделать:

number_total = records / per_page

где per_page = 100 и records = 1050, а затем округлить, чтобы не было десятичных знаков? Таким образом, вместо 10.5 оно равно 11?

Ответ 1

Отредактировано после комментария

number_total = (records / per_page.to_f).ceil

Ответ 2

@lulala Еще один корень всего зла: результаты сбора вишни.

Запустите свой тест несколько раз. Я получаю следующее:

       user     system      total        real
   0.120000   0.000000   0.120000 (  0.119281)
   0.120000   0.000000   0.120000 (  0.123431)

Какая связь.

       user     system      total        real
   0.110000   0.000000   0.110000 (  0.118602)
   0.130000   0.000000   0.130000 (  0.127195)

Это говорит о том, что float_op быстрее.

       user     system      total        real
   0.150000   0.000000   0.150000 (  0.151104)
   0.120000   0.000000   0.120000 (  0.123836)

Это говорит о том, что integer_op нас быстрее.

Ответ 3

Вот корень всего зла: преждевременно оптимизированный метод:

class Integer
  # returns quotient ceiling integer
  def div_ceil(divisor)
    q = self / divisor
    if self % divisor > 0
      return q + 1
    else
      return q
    end
  end
end

Следующий контрольный код:

require 'benchmark'

$a = 1050
$b = 100

def float_op
  ( $a / $b.to_f ).ceil
end

def integer_op
  q = $a / $b
  if $a % $b > 0
    return q + 1
  else
    return q
  end
end

n = 1000000
Benchmark.bm do |x|
  x.report { n.times do; float_op; end }
  x.report { n.times do; integer_op; end }
end

Дает мне этот результат

       user     system      total        real
   0.160000   0.000000   0.160000 (  0.157589)
   0.130000   0.000000   0.130000 (  0.133821)