Java - Kelvin to Fahrenheit转换方法

时间:2014-02-27 05:07:32

标签: java formula temperature

所以我目前正在开发一个非常简单的程序。它的作用是将华氏温度或摄氏温度转换为开尔文值,然后根据用户请求(f或c)将开尔文值转换并返回为摄氏或华氏温度。

我的Celsius转换似乎工作得很好,但华氏是一个不同的故事。我们的教授说我们的输出必须与给定的例子100%匹配,当我给出Celsius值并请求Celsius时,它总是返回我最初输入的值。

然而,当我将95摄氏度转换为华氏温度时,我得到了这个:203.28800000000007 我应该得到的价值是:203.0 此外,当我输入50华氏温度并要求它返回华氏温度时,我得到了这个:32.0。

我会发布包含我所有转换方法的类,但是有人可以帮我解决我可能出错的地方吗?它看起来像我的公式,它只是返回添加/减去32的公式的一部分。我已经尝试了公式的替代格式,但似乎没有任何工作。

public class Temperature 

{

// Instance variable

   private double degreesKelvin; // degrees in Kelvin

// Constructor method: initialize degreesKelvin to zero

   public Temperature() 
   {
      degreesKelvin = 0;
   }

// Convert and save degreesCelius in the Kelvin scale

   public void setCelsius(double degreesCelsius) 
   {
      degreesKelvin = degreesCelsius + 273.16;
   }

// Convert degreesKelvin to Celsius and return the value

   public double getCelsius() 
   {
      double c = degreesKelvin - 273.16;
      return c;
   }

// Convert and save degreesFahrenheit in the Kelvin scale

   public void setFahrenheit(double degreesFahrenheit) 
   {
      degreesKelvin = (5/9 * (degreesFahrenheit - 32) + 273);
   }

// Convert degreesKelvin to Fahrenheit and return the value

   public double getFahrenheit() 
   {
      double f = (((degreesKelvin - 273) * 9/5) + 32);
      return f;
   }

}

感谢您的帮助,我尝试寻找这个问题的解决方案,但到目前为止似乎对我没有任何帮助。

2 个答案:

答案 0 :(得分:2)

注意整数除法,2个整数的结果(分割时)产生一个整数:

5/9 = 0
9/5 = 1

要解决此问题,请将其中一个转换为浮动类型,例如:

5d/9 //or 5.0/9

同样

9d/5 //or 9.0/5

答案 1 :(得分:0)

问题正在发生,因为在存储时你正在摄取摄氏度273.16。额外的.16引入了这个错误。 为95度celsiun

degreeKelvin = 273.16 + 95

现在返回时变为

5/9 *(273.16 + 95-273)+32 == 5/9(95.16)+32 == 203.2

,而

5/9 *(273 + 95-273)+ 32 == 203