def precision_from_match major, minor, rational=nil
      if rational
        leftover_minor_precision = minor.eql?('0') ? 0 : minor.size
        rational_precision       = rational.delete('-').to_i
        [major.size, leftover_minor_precision.send(rational.start_with?('-') ? :+ : :-, rational_precision)]
      else
        [major, minor].map(&:size)
      end
    end
def precision_from_match major, minor, rational=nil
      if rational
        leftover_minor_precision = minor.eql?('0') ? 0 : minor.size
        rational_precision       = rational.delete('-').to_i
        [major.size, leftover_minor_precision.send(rational.start_with?('-') ? :+ : :-, rational_precision)]
      else
        [major, minor].map(&:size)
      end
    end
Get the precision from a match with /^-?(\d*)\.?(\d*)e?(-?\d+)?$/

 @params [String] major The major amount of the match as a string
 @params [String] minor The minor amount of the match as a string
 @params [String] rational The rational of the match as a string
 @return [Array] An array containing the major and the minor precision in this order