class Eqn::Function::RoundBase

Base node class for round functions.

Public Instance Methods

value(vars) click to toggle source
# File lib/eqn/function.rb, line 16
def value(vars)
  value = elements.shift.value(vars)
  raise ZeroDivisionError if value.is_a?(Float) && (value.abs == Float::INFINITY || value.nan?)

  if term?
    value.send(self.class::ROUND_METHOD)
  else
    round_to_precision(vars, value)
  end
end

Private Instance Methods

round_to_precision(vars, value) click to toggle source
# File lib/eqn/function.rb, line 29
def round_to_precision(vars, value)
  decimals = elements.shift.value(vars)
  (value * 10**decimals).send(self.class::ROUND_METHOD).to_f / 10**decimals
end