# File lib/money/money.rb, line 379
  def allocate(splits)
    allocations = splits.inject(0.0) {|sum, i| sum += i }
    raise ArgumentError, "splits add to more then 100%" if (allocations - 1.0) > Float::EPSILON

    left_over = cents

    amounts = splits.collect do |ratio|
      fraction = (cents * ratio / allocations).floor
      left_over -= fraction
      fraction
    end

    left_over.times { |i| amounts[i % amounts.length] += 1 }

    amounts.collect { |cents| Money.new(cents, currency) }
  end