class Splittable::Division
Attributes
precision[R]
quantity[R]
value[R]
Public Class Methods
new(value:, quantity:, precision: 2)
click to toggle source
# File lib/splittable/division.rb, line 4 def initialize(value:, quantity:, precision: 2) @precision = precision @value = BigDecimal(value, 15).truncate(precision) @quantity = BigDecimal(quantity.to_i, 15) check_quantity_as_positive_value! end
Public Instance Methods
call()
click to toggle source
# File lib/splittable/division.rb, line 12 def call partial_value = (value / quantity).truncate(precision) installments = [partial_value] * quantity installments[0] += value - installments.sum.to_d installments end
Private Instance Methods
check_quantity_as_positive_value!()
click to toggle source
# File lib/splittable/division.rb, line 24 def check_quantity_as_positive_value! return if quantity.positive? raise ArgumentError, 'quantity should be positive' end