2

在测试环境中,我需要获取特定百分比的数组元素。

我的请求的规格可以在这个测试中描述:

def test_percent_elements
  array = [1,2,3,4,5,6,7,8,9,10]

  assert_equal([], array.percent_elements(0))
  assert_equal([1], array.percent_elements(1))
  assert_equal([1], array.percent_elements(10))
  assert_equal([1,2], array.percent_elements(11))
  assert_equal([1,2,3,4,5], array.percent_elements(50))
  assert_equal([1,2,3,4,5,6,7,8,9,10], array.percent_elements(100))
end

在 Ruby 中解决这个问题的最佳方法是什么?

4

2 回答 2

7

我会写:

class Array
  def percent_elements(percent)
    take((size * percent / 100.0).ceil)
  end
end
于 2013-03-26T16:38:08.290 回答
0

我的实际做法是这样的:

class Array
  def percent_elements(percent)
    total = self.length
    elements = ((total * percent) / 100.to_f).ceil
    self[0, elements]
  end
end
于 2013-03-26T16:29:11.200 回答