C#平方根表达式无法正常工作

时间:2013-11-10 18:28:59

标签: c#

我有一个非常简单的小程序来解决二次方程,主要是它有效,但由于某种原因它不会计算平方根。我刚收到错误NaN,但我看不出它是不是一个数字?

int a = Convert.ToInt16(txta.Text);
int b = Convert.ToInt16(txtb.Text);
int c = Convert.ToInt16(txtc.Text);          

listBox1.Items.Add(Convert.ToString(Math.Sqrt(((b * b) - (4 * a * c)))));

2 个答案:

答案 0 :(得分:3)

转化不是原因,因为如果它们没有正确转换,或者如果有溢出,则分别会得到FormatExceptionOverflowException。尽管如此,因为你正在做数学,你可能想要转换为双重类型。

double a = Convert.ToDouble(txta.Text);
double b = Convert.ToDouble(txtb.Text);
double c = Convert.ToDouble(txtc.Text);

我相信你的表达:(b * b) - (4 * a * c)就是问题所在。如果评估为负数,则会产生NaN结果。

有关详细信息,请参阅Math.Sqrt Method on MSDN

答案 1 :(得分:0)

可能会出现负数。将它转换为double而不是Int16可能会有所帮助,因为Int16每次都会循环。