0

したがって、私のアプリには、二次式を使用して合計を解くこの部分があります。しかし、私は奇妙な出力を得ます。これは、実際の答え「NaNまたはNaN」の代わりに得られるものです

このコードは、ボタンをクリックすると実行されます。

h1 = Double.parseDouble(a);
h2 = Double.parseDouble(b);
h3 = Double.parseDouble(c);


                sq2 = (h1 * h1 - 4* 0.5 *h3*h1);
                sq = (h1 * h1 - 4* 0.5 *h3*h1);

                fin = h1 + (Math.sqrt(sq2))/(2* 0.5 * h3); 
                fin2 = (h1 - (Math.sqrt(sq)))/(2* 0.5 * h3); 

                AlertDialog.Builder ans4 = new AlertDialog.Builder(Eq2.this);
                ans4.setTitle("ANSWER");
                ans4.setMessage(fin + " or " + fin2);
                ans4.setPositiveButton("OKAY!", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface arg0, int arg1) {
                        // TODO Auto-generated method stub
                        e4.setText(fin + "or" + fin2); 
                    }
                });
                ans4.show();
4

2 に答える 2

1

Math.sqrt得られた負の数(数値ではない) で実行する場合はNaN、計算を確認してください。

Math.absbeforeを使用Math.sqrtすると数値が得られます (入力がMath.sqrt正になります) が、おそらく正しい数値ではありません。

fin = h1 + (Math.sqrt(Math.abs(sq2))/(2* 0.5 * h3); 
fin2 = (h1 - (Math.sqrt(Math.abs(sq))))/(2* 0.5 * h3); 
于 2013-07-28T14:10:38.077 に答える