Java 为什么';我的温度换算计算不正确吗?

Java 为什么';我的温度换算计算不正确吗?,java,Java,我试着用华氏温度来测量我的体温,然后把它转换成摄氏度。当我调用toCelsius()方法时,它会将温度计算到0摄氏度 这是我的换算方法 public Temperature toCelsius() { Temperature answer = new Temperature(); switch(tempType) { case 'C': answer = new Temperature(this.temp,'C');

我试着用华氏温度来测量我的体温,然后把它转换成摄氏度。当我调用toCelsius()方法时,它会将温度计算到0摄氏度

这是我的换算方法

    public Temperature toCelsius()
    {
    Temperature answer = new Temperature();
    switch(tempType)
    {
    case 'C':
        answer =  new Temperature(this.temp,'C');
        return answer;
    case 'F':
        answer =  new Temperature(((this.temp-32)*(5/9)),'C');
        return answer;

    case 'K':
        answer =  new Temperature((this.temp-241.15),'C');
        return answer;

    default:
        System.out.println("ERROR!");
        break;

    }
    return answer;
    }
这是我的演示

    public class TempDemo {

        public static void main(String[] args) {

            Temperature temp1 = new Temperature(122, 'F');
            System.out.println(temp1.toCelsius());
      }

    }

5
9
都是
int
文本,因此将使用-来对它们进行分割,也就是说,只需要整个分割的一部分。由于5小于9,这将导致
0
,因此整个乘法也将如此

相反,您应该使用
double
文本:

answer =  new Temperature(((this.temp-32)*(5.0/9.0)), 'C');

5
9
都是
int
文本,因此将使用-来对它们进行分割,也就是说,只需要整个分割的一部分。由于5小于9,这将导致
0
,因此整个乘法也将如此

相反,您应该使用
double
文本:

answer =  new Temperature(((this.temp-32)*(5.0/9.0)), 'C');

我认为用整数除法不会产生十进制数<代码>5/9等于
0
。我认为你必须使用双精度。我认为整数除法不会产生十进制数<代码>5/9等于
0
。我认为您必须使用
double
。如果您想将其保持为
int
值,您可以执行
(this.temp-32)*5/9
,并获得接近的答案+1如果您想将其保留为
int
值,可以执行
(this.temp-32)*5/9
并获得接近的答案+1.