C# 求解一元二次方程 ,
其中,在代码中加以保护,
直接上代码:
/// <summary>
/// 求解一元二次方程
/// a * x^2 + b * x + c = 0
/// </summary>
/// <param name="a">二次项系数</param>
/// <param name="b">一次项系数</param>
/// <param name="c">常量</param>
/// <param name="result1">解出的第一个根</param>
/// <param name="result2">解出的第二个根</param>
/// <returns>是否有解</returns>
public static bool CalculateLinearEquationInTwoUnknwons(float a, float b, float c, out float result1, out float result2)
{
result1 = float.NaN;
result2 = float.NaN;
if (a == 0)
{
if (b == 0)
{
return false;
}
result1 = -c / b;
result2 = result1;
return true;
}
var delta = b * b - 4 * a * c;
if (delta > 0)
{
result1 = (float) ( (-b + Math.Sqrt(delta)) / (2 * a) );
result2 = (float) ( (-b - Math.Sqrt(delta)) / (2 * a) );
return true;
}
else if (delta == 0)
{
result1 = -b / (2 * a);
result2 = result1;
return true;
}
else
{
return false; //无解
}
}