我有一个非常简单的小程序来解决二次方程,主要是它有效,但由于某种原因它不会计算平方根。我刚收到错误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)))));
答案 0 :(得分:3)
转化不是原因,因为如果它们没有正确转换,或者如果有溢出,则分别会得到FormatException
或OverflowException
。尽管如此,因为你正在做数学,你可能想要转换为双重类型。
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每次都会循环。