3

我在这里做了一段简单的java代码,它是一种将华氏温度转换为摄氏温度的方法。但是,当我运行它时,输出始终是0.0.

我无法让它输出正确的计算。我可能忘记做一些愚蠢的小事,有人可以帮助我吗?

public class ExampleQ {

    public static void main(String[] args) {

        System.out.println(Celsius(50));
    }

    public static double Celsius(double F)
    {
        return (5 / 9) * (F - 32);
    }
}
4

6 回答 6

7

错误是整数除法

在 Java 中5 / 9 = 0

尝试:

return (5.0 / 9) * (F - 32);
于 2013-04-10T06:25:49.460 回答
5

(5/9) 产生一个整数除法,结果为“0”。结果,它为整个表达式生成 0。尝试

return (5.0 / 9) * (F - 32);
于 2013-04-10T06:31:30.127 回答
4

这是解决方案。在在线编译器 Ideone http://ideone.com/zRyG80测试

只需替换return (5 / 9) * (F - 32);return (F - 32) * 5 / 9;

因为原因是运算符执行的顺序。在您的代码中,在乘法之前执行除法,这使得 5/9 = 0。

class Main {
    public static void main(String[] args) throws java.lang.Exception {

        System.out.println(Celsius(50));
    }

    public static double Celsius(double F) {
        return (F - 32) * 5 / 9;
    }
}

输出

10.0

于 2013-04-10T06:35:38.160 回答
3

5 / 9返回 0,因为您正在执行整数除法。

5.0 / 9.0改为使用

于 2013-04-10T06:27:17.733 回答
2

(5/9) 被解释为整数并四舍五入为 0.0。

为避免整数,您可以将其替换为 (5.0/9)。

于 2013-04-10T06:28:38.140 回答
2

或者你可以使用下面的代码

return (5d / 9d) * (F - 32);
于 2013-04-10T06:28:53.363 回答