module ElasticAPM::Util::PrecisionValidator

def validate(value, precision: 0, minimum: nil)

def validate(value, precision: 0, minimum: nil)
  float = Float(value)
  return nil unless (0.0..1.0).cover?(float)
  return float if float == 0
  multiplier = Float(10**precision)
  rounded = (float * multiplier + 0.5).floor / multiplier
  if rounded == 0 && minimum
    minimum
  else
    rounded
  end
rescue ArgumentError
  nil
end