0

我正在尝试编写一个程序,它将以华氏度表示的温度转换为摄氏度。用户输入华氏值,程序打印出摄氏值。用户应该输入 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);
    }
}
4

3 回答 3

4

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

于 2012-11-08T04:18:25.310 回答
2
double ft = 5 / 9 ;

上面的行没有做你认为它做的事情。
因为59都是整数,所以它会进行整数除法。您将结果分配给双精度的事实并不重要,如果两个操作数都是整数,您将获得整数数学。

ft永远如此,永远0如此cel0

尝试

double ft = 5.0/9.0;
于 2012-11-08T04:19:41.993 回答
0

当您对两个整数进行操作时,结果不会转换为双精度数。它仅保留为 int。要将结果变成双倍,至少有一个数字应该是双倍的。例如

       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

有关详细信息,请参阅浮点操作规范

于 2012-11-08T04:22:08.857 回答