华氏度到摄氏度的转换

时间:2012-11-08 04:16:35

标签: java double

我正在尝试编写一个程序,将以华氏度表示的温度转换为摄氏度。用户输入华氏度值,程序将打印出摄氏度值。用户应该输入212作为华氏度值,程序应该计算100.0作为摄氏值,但是当我想得到100.0时,我得到0.0作为摄氏值

我不确定问题出在哪里。是否可能是运营秩序?

将摄氏温度转换为华氏温度的公式为:C = 5 / 9 (F - 32)

import acm.program.*; 

public class FahrenheitToCelsius extends ConsoleProgram {

    public void run() {
        println("This program converts Fahrenheit to Celsius");
        int fah = readInt("Enter Fahrenheit temperature: ");
        double ft = 5 / 9;
        double cel = ft * (fah - 32);
        println("Celsius equivalent = " + cel);
    }
}

3 个答案:

答案 0 :(得分:4)

5 / 9是整数除法,因此即使您将其分配给0,它也会返回double
试试5.0 / 9

答案 1 :(得分:2)

double ft = 5 / 9 ;

上述行不符合您的想法 因为59都是整数,所以它会进行整数除法。 你将结果赋值给double的事实并不重要,如果两个操作数都是整数,你将得到整数数学。

所以ft总是0,所以cel总是0

尝试

double ft = 5.0/9.0;

答案 2 :(得分:0)

当您对两个整数进行操作时,结果不会转换为double。它仍然只是int。 要将结果设置为double,至少其中一个数字应为double。,例如

       double ft = 5.0/9; //double
       double ft = 5/9.0;//double
       double ft = 5.0/9.0;//double

虽然

        double ft = 5/9; //int 0

请参阅Floating Point Operations Specification了解详情。