0

二次方程式を解くための非常に単純な小さなプログラムがあります。主に機能しますが、何らかの理由で平方根を計算しません。というエラーが表示されます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)))));
4

2 に答える 2

3

適切に変換されなかった場合、またはオーバーフローが発生した場合は、それぞれFormatExceptionまたはが得られるため、変換は原因ではありませんOverflowException。ただし、数学を行っているため、double 型に変換する必要がある場合があります。

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

私はあなたの表現を信じています:(b * b) - (4 * a * c)が問題です。負の数に評価された場合、それは結果にNaNなります。

詳細については、MSDN の Math.Sqrt メソッドを参照してください。

于 2013-11-10T18:34:39.523 に答える
0

負の数になる可能性が高いです。Int16 は毎回丸められるため、Int16 ではなく double に変換すると役立つ場合があります。

于 2013-11-10T18:34:01.560 に答える