What would be the best way to refactor following methods?
private string CalcualtePercentageDifference(string temp1, string temp2)
{
double number1 = ParseDouble(temp1);
double number2 = ParseDouble(temp2);
double percentageDifference = 0;
if (number1 == 0 || number2 == 0)
{
return "0 %";
}
if ((number1 >= number2) && number1 > 0 && number2 > 0)
{
double tempNumber = number2*100/number1;
Math.Abs(percentageDifference = 100 - tempNumber);
}
if ((number2 >= number1) && number1 > 0 && number2 > 0)
{
double tempNumber = number1*100/number2;
Math.Abs(percentageDifference = 100 - tempNumber);
}
if (number1 < 0 && number2 > 0)
{
double tempNumber = (number2 + Math.Abs(number1))/Math.Abs(number1);
Math.Abs(percentageDifference = 100 - tempNumber);
}
if (number2 < 0 && number1 > 0)
{
double tempNumber = (number1 + Math.Abs(number2))/Math.Abs(number2);
Math.Abs(percentageDifference = 100 - tempNumber);
}
if (number1 < 0 && number2 < 0)
{
number1 = Math.Abs(number1);
number2 = Math.Abs(number2);
if ((number1 >= number2))
{
double tempNumber = number2 * 100 / number1;
Math.Abs(percentageDifference = 100 - tempNumber);
}
if ((number2 >= number1))
{
double tempNumber = number1 * 100 / number2;
Math.Abs(percentageDifference = 100 - tempNumber);
}
}
return Math.Round(percentageDifference) + " %";
}
private static double ParseDouble(object value, string valueName = "")
{
double outValue = double.NaN;
try
{
outValue = Convert.ToDouble(value);
}
catch (FormatException e)
{
//We will get here when value contains NumberDecimalSeparator different from this in current culture
//Convert now using suitable culture
outValue = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator == ","
? Convert.ToDouble(value, CultureInfo.InvariantCulture)
: Convert.ToDouble(value, new CultureInfo("pl-PL"));
}
catch (InvalidCastException)
{
}
return outValue;
}