如何编写二次方程求解器? (C#)

时间:2018-03-19 19:19:26

标签: c#

我正在尝试创建一个简单的二次方程(x ^ 2 + px + q = 0)求解器,但我得到的答案总是错误的。我的代码看起来像这样

double p, q;

Console.Write("Insert the value of p: ");
int p = int.Parse(Console.ReadLine());

Console.Write("Insert the value of q: ");
int q = int.Parse(Console.ReadLine());

Console.WriteLine("x1 = " + (-p/2 + Math.Sqrt((p/2) ^ 2 - q )));
Console.WriteLine("x2 = " + (-p/2 - Math.Sqrt((p/2) ^ 2 - q)));

我的猜测是"x1 = " + (-p/2 + Math.Sqrt((p/2) ^ 2 - q )));x2 = + (-p/2 - Math.Sqrt((p/2) ^ 2 - q)));部分出了问题。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

  

我的猜测是x1 = ...x2 = ...部分出了问题。

以下是他们的错误:

  • pq都是int;它们应该是double,否则除以2会截断结果。
  • n ^ 2并不意味着在C#中“平方”。请改用Math.Power(x, 2)
  • 如果您希望允许int.Parsedouble.Parse的小数输入,则可以保留p或更改为q
  • 您永远不会检查p是否为正。这是确保定义平方根所必需的。

答案 1 :(得分:0)

ax ^ 2 + bx + c = 0

二次方的公式是:

(-b ± sqrt(b^2 - 4*a*c)) / 2a

因为你的x ^ 2前面没有数字,你可以简化为:

(-b ± sqrt(b^2 - 4*c)) / 2

所以对你:

(-p/2 ± sqrt(p^2 - 4*q)) / 2