/// <summary> /// Returns a new unit with the specified prefix /// </summary> /// <param name="prefix"></param> /// <returns>new Unit</returns> public Unit ChangePrefix(Prefix prefix, BaseUnit baseUnit) { int difference = ((sbyte)GetPrefix(baseUnit) - (sbyte)prefix) * GetPower(baseUnit); var prefixes = new sbyte[Length]; Prefixes.CopyTo(prefixes, 0); prefixes[(sbyte)baseUnit - 1] = (sbyte)prefix; double quantity = Quantity * Math.Pow(10, difference); return(new Unit(quantity, new Vector <sbyte>(prefixes), Powers)); }