code: func ScaleValue(value int64, fromUnit, toUnit string) (sv float64, su string) {
  	// Avoid infinite recursion on overflow.
  	if value < 0 && -value > 0 {
  		v, u := ScaleValue(-value, fromUnit, toUnit)
  		return -v, u
  	}
  	if m, u, ok := memoryLabel(value, fromUnit, toUnit); ok {
  		return m, u
  	}
  	if t, u, ok := timeLabel(value, fromUnit, toUnit); ok {
  		return t, u
  	}
  	// Skip non-interesting units.
  	switch toUnit {
  	case "count", "sample", "unit", "minimum":
  		return float64(value), ""
  	default:
  		return float64(value), toUnit
  	}
  }
docs: // ScaleValue reformats a value from a unit to a different unit.