我正在尝试创建一个简单的二次方程(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)));
部分出了问题。
非常感谢任何帮助。
答案 0 :(得分:1)
我的猜测是
x1 = ...
和x2 = ...
部分出了问题。
以下是他们的错误:
p
和q
都是int
;它们应该是double
,否则除以2会截断结果。 n ^ 2
并不意味着在C#中“平方”。请改用Math.Power(x, 2)
int.Parse
和double.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