成功将String解析为Double,但所有后续计算都失败

时间:2011-04-15 16:58:29

标签: java parsing

我正在为我的Java类编写程序,我们被要求使用GUI设计一个程序,该程序接受温度值并转换为其他程序,例如从华氏温度到摄氏温度和开尔文温度。我遇到了一个问题:

if (event.getSource() == fahrText)  
                {  
                string = event.getActionCommand();  
                tempF = Double.parseDouble(string);  
                tempC = (tempF - 32) * (5/9);  
                tempK = tempC + 273.15;  
                resultF.setText("Fahr: " + tempF);  
                resultC.setText("Cels: " + tempC);  
                resultK.setText("Kelv: " + tempK);  
            }  

无论我输入“fahrText”JTextField的是什么数字,我都将Celsius设为0,而tempF显示我输入的值。有什么建议吗?我使用Double.valueOf(string)得到了相同的结果。

3 个答案:

答案 0 :(得分:5)

尝试5.0/9.0 - 5/9是整数除法,并且等于0.整数除法为您提供一个整数 - 无论您将结果分配给哪种类型。

您还可以保持private final static double FToCFactor = 5.0/9.0;左右并与之相乘。

答案 1 :(得分:2)

表达式

5/9

表示整数除法。该表达式的结果是0

你想要的是浮点除法。它可以通过

来实现
5.0/9.0

答案 2 :(得分:2)

对所有数学运算使用双常数(例如32.0d)而不是整数。你最终会做整数数学而不是浮点数学。