2017-09-29 84 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

當'千克'和'(米*米)'等於'0.0'時,'NaN'被執行。 –

回答

0

「南」 代表 「不是一個數字」。如果浮點數 操作有一些輸入參數導致 產生一些未定義的結果,則會產生該結果。例如,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說明你的答案將雙值的可能的結果,我很抱歉因爲沒有張貼鱈魚足以識別錯誤,因爲我告訴我是新手,但hehehe

我的錯誤是我插入變量在另一個部分,所以系統識別我的變量爲「0.00」所以回到我的NaN錯誤。

現在已經修復。

再次感謝!

0

JTextField中轉換爲double返回的NaN

角色轉換是明確定義的。你不必猜測,只需檢查JLS。 (int,float & long)加倍是一個擴大的轉換。

私人雙重結果;

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); 
    } 

轉換int或長值的浮動,或長值加倍的,可能導致精度的,也就是說,其結果可能會丟失一些的所述至少顯著比特的損失值。在這種情況下,得到的浮點值將是整數值的正確舍入版本,使用IEEE 754最近鄰舍模式。

乾杯