def apply_to_quantity(method, other)
      other = other.as(unit).quantity if Measurement === other
      new_quantity = block_given? ? yield(to_f, other) : to_f.send(method, other)
      Measurement.new(unit, new_quantity)
    end
def apply_to_quantity(method, other)
      other = other.as(unit).quantity if Measurement === other
      new_quantity = block_given? ? yield(to_f, other) : to_f.send(method, other)
      Measurement.new(unit, new_quantity)
    end
Returns a new Measurement whose unit is this Measurement's unit and quantity is the
 result of applying the given method to this Measurement's quantity and the other quantity.

 If other is a Measurement, then the operation argument is the other Measurement quantity, e.g.:
   Measurement.new(:g, 3).apply(Measurement.new(:mg, 2000), :div) #=> 1 gram