Есть кусок кода, объясните что он делает - C#
Формулировка задачи:
private double GetRisk(Dictionary<string, double> dF, double Prob)
{
if (Prob < -4.0)
Prob = -4.0;
if (Prob > 4.0)
Prob = 4.0;
if (Prob < 0.0)
{
Prob = Math.Abs(Prob);
if (dF.ContainsKey(Prob.ToString()))
return 1.0 - dF[Prob.ToString()];
double num1 = 0.0;
double num2 = 100000.0;
foreach (string str in dF.Keys)
{
if (Convert.ToDouble(str) < Prob && num1 < Convert.ToDouble(str))
num1 = Convert.ToDouble(str);
if (Convert.ToDouble(str) > Prob && num2 > Convert.ToDouble(str))
num2 = Convert.ToDouble(str);
}
double num3 = (Prob - num1) / (num2 - num1);
return Math.Round(1.0 - ((1.0 - num3) * dF[num1.ToString()] + num3 * dF[num2.ToString()]), 4);
}
else
{
if (dF.ContainsKey(Prob.ToString()))
return dF[Prob.ToString()];
double num1 = 0.0;
double num2 = 100000.0;
foreach (string str in dF.Keys)
{
if (Convert.ToDouble(str) < Prob && num1 < Convert.ToDouble(str))
num1 = Convert.ToDouble(str);
if (Convert.ToDouble(str) > Prob && num2 > Convert.ToDouble(str))
num2 = Convert.ToDouble(str);
}
double num3 = (Prob - num1) / (num2 - num1);
return Math.Round((1.0 - num3) * dF[num1.ToString()] + num3 * dF[num2.ToString()], 4);
}
}Решение задачи: «Есть кусок кода, объясните что он делает»
textual
Листинг программы
foreach (string str in dF.Keys)
{
if (Convert.ToDouble(str) < Prob && num1 < Convert.ToDouble(str))
num1 = Convert.ToDouble(str);
if (Convert.ToDouble(str) > Prob && num2 > Convert.ToDouble(str))
num2 = Convert.ToDouble(str);
}
double num3 = (Prob - num1) / (num2 - num1);
return Math.Round(1.0 - ((1.0 - num3) * dF[num1.ToString()] + num3 * dF[num2.ToString()]), 4);