/// <summary> /// Returns the greatest common denominator between value1 and value2 /// </summary> /// <param name="value1">Value 1</param> /// <param name="value2">Value 2</param> /// <returns>The greatest common denominator if one exists</returns> public static int GreatestCommonDenominator(this int value1, int value2) { if (value1 == int.MinValue) { throw new ArgumentOutOfRangeException(nameof(value1), Properties.Resources.ValueCanNotBeMin); } if (value2 == int.MinValue) { throw new ArgumentOutOfRangeException(nameof(value2), Properties.Resources.ValueCanNotBeMin); } value1 = value1.Absolute(); value2 = value2.Absolute(); while (value1 != 0 && value2 != 0) { if (value1 > value2) { value1 %= value2; } else { value2 %= value1; } } return(value1 == 0 ? value2 : value1); }
/// <summary> /// Shifts the decimal point. <para>If negative, shift left; otherwise, shift right.</para> /// </summary> /// <param name="value"></param> /// <param name="shifts"></param> /// <returns></returns> public static double Shift(this double value, int shifts = 1) { var LeftOrRight = shifts < 0; for (var i = 0; i < shifts.Absolute(); i++) { value = LeftOrRight ? value / 10 : value * 10; } return(value); }
/// <summary> /// Returns the greatest common denominator between value1 and value2 /// </summary> /// <param name="Value1">Value 1</param> /// <param name="Value2">Value 2</param> /// <returns>The greatest common denominator if one exists</returns> public static int GreatestCommonDenominator(this int Value1, int Value2) { Value1 = Value1.Absolute(); Value2 = Value2.Absolute(); while (Value1 != 0 && Value2 != 0) { if (Value1 > Value2) { Value1 %= Value2; } else { Value2 %= Value1; } } return(Value1 == 0 ? Value2 : Value1); }
/// <summary> /// Returns the greatest common denominator between value1 and value2 /// </summary> /// <param name="Value1">Value 1</param> /// <param name="Value2">Value 2</param> /// <returns>The greatest common denominator if one exists</returns> public static int GreatestCommonDenominator(this int Value1, int Value2) { Contract.Requires <ArgumentOutOfRangeException>(Value1 != Int32.MinValue, "Value1 can not be Int32.MinValue"); Contract.Requires <ArgumentOutOfRangeException>(Value2 != Int32.MinValue, "Value2 can not be Int32.MinValue"); Value1 = Value1.Absolute(); Value2 = Value2.Absolute(); while (Value1 != 0 && Value2 != 0) { if (Value1 > Value2) { Value1 %= Value2; } else { Value2 %= Value1; } } return(Value1 == 0 ? Value2 : Value1); }