2017-09-29 11 views
0

私はここに新しくコーディングしています。コースの締結プロジェクトを行っていて、どこにエラーがあるのか​​探しにくいです。 は基本的に私のコードは以下のとおりです。JTextFieldをDoubleに変換して返すNaN

kilograms = Double.parseDouble(kgTextField.getText()); 
meters = Double.parseDouble(metersTextField.getText()); 
pounds = Double.parseDouble(poundsTextField.getText()); 
inches = Double.parseDouble(inchesTextField.getText()); 
result = (kilograms)/(meters * meters);  
resultTextField.setText(String.format("%,.2f", result)); 

結果は私にNaN値を与えているとエラーがどこにあるか私が見つけていませんよ。 変数の文字列から文字列への変換を行っていますが、それでも動作しません。誰かが私に光を与えることができますか?

乾杯

+0

エラーを見つけるためのコードが必要です – XtremeBaumer

+2

テキストフィールドには何がありますか?そして、あなたのコードは、彼が使用していないと無関係なときにポンドとインチを参照する理由は何ですか? [mcve]を投稿してください - それが意味するものを見つけるためにリンクに従ってください。 –

+2

'' NaN''は、 '' kilograms''と '(meters * meters)''の両方が' 0.0'に等しいときに生成されます。 –

答えて

0

"NaNは" "ではない数" の略です。浮動小数点 オペレーションに、いくつかの入力パラメータがあり、 への操作で何らかの未定義の結果が生成された場合に生成されます。たとえば、0.0で割った0.0は、算術的に定義されていない です。負の数 の平方根をとることも未定義です。あなたのケースではthis question

から取ら

引用は、あなたがテキストフィールドから得られた値が有効であり、従って、無効な値を扱うかどうかを確認する必要があります。

ex。メートルでなければならない!= 0のコードチャンクは以下がjava.lang.Doubleから撮影し、あなたの答えを0.0

/** 
* A constant holding the positive infinity of type 
* {@code double}. It is equal to the value returned by 
* {@code Double.longBitsToDouble(0x7ff0000000000000L)}. 
*/ 
public static final double POSITIVE_INFINITY = 1.0/0.0; 

/** 
* A constant holding the negative infinity of type 
* {@code double}. It is equal to the value returned by 
* {@code Double.longBitsToDouble(0xfff0000000000000L)}. 
*/ 
public static final double NEGATIVE_INFINITY = -1.0/0.0; 

/** 
* A constant holding a Not-a-Number (NaN) value of type 
* {@code double}. It is equivalent to the value returned by 
* {@code Double.longBitsToDouble(0x7ff8000000000000L)}. 
*/ 
public static final double NaN = 0.0d/0.0; 
0

THXによってdouble値を分割することができた結果を示している

とごめんなさい私はまだ初心者だと言っていたので、エラーを識別するのに十分なコードを投稿していなかったのです。

私のエラーは私が他のセクションに変数を挿入したことです。私にNaNエラーを返す。

これで修正されました。

もう一度おねがいします!

0

JTextFieldがNaNに

キャスト変換が明確に定義されている復帰doubleに変換しました。あなたは推測する必要はありません、ちょうどJLSをチェックしてください。 (int、float & long)をdoubleにすると、変換が拡大します。

プライベートダブル結果;倍増する浮遊するintまたは長い値、又は長い値の

private double result; 
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {          
    double kilograms = 0.0; 
    double meters = 0.0; 
    if (meters > 0) { 
     result = (kilograms)/(meters * meters); 
    } else { 
     result = 0.0; //As you wish to store except NaN 
    } 
    jTextField1.setText("" + result); 
    } 

変換、精密それが失われる可能性があり、結果としての最下位ビットの一部を失う可能性が値。この場合、結果として得られる浮動小数点値は、IEEE 754ラウンド・トゥ・オール・ビフォア・モードを使用して、整数値の正確に丸められたバージョンになります。

乾杯お返事

関連する問題