class ActiveModel::Validations::NumericalityValidator
def parse_as_number(raw_value, precision, scale)
def parse_as_number(raw_value, precision, scale) if raw_value.is_a?(Float) parse_float(raw_value, precision, scale) elsif raw_value.is_a?(BigDecimal) round(raw_value, scale) elsif raw_value.is_a?(Numeric) raw_value elsif is_integer?(raw_value) raw_value.to_i elsif !is_hexadecimal_literal?(raw_value) parse_float(Kernel.Float(raw_value), precision, scale) end end