2017-09-29 52 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最近邻舍模式。

干杯