2013-04-10 128 views
3

我在这里做一个简单的java代码片段,它是调用将华氏转换为摄氏温度的方法。但是,当我运行它时,输出始终是0.0Java,从方法中返回一个值

我不能得到它输出正确的计算。可能有一些我已经忘记做的傻事,有人可以帮我吗?

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); 
    } 
} 
+3

你会惊讶,但5/9 == 0在Java中的乘法之前执行: )5.0/9是不是.. – 2013-04-10 06:26:29

+0

而不是只在Java :) – NPE 2013-04-10 06:27:02

回答

7

错误是Integer division

在Java 5/9 = 0

尝试:

return (5.0/9) * (F - 32); 
+0

真棒,我知道它是这样的小事情,我通常不会被困在这样的事情。谢谢 – drcoding 2013-04-10 06:30:13

+0

很高兴我可以帮助:) – BobTheBuilder 2013-04-10 06:32:48

3

5/9返回0,因为你执行整数师。

使用5.0/9.0代替

2

(5/9)被解释为整数,舍入为0.0。

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

2

否则,您可以使用下面的代码

return (5d/9d) * (F - 32); 
5

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

return (5.0/9) * (F - 32); 
4

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

只是return (F - 32) * 5/9;

更换return (5/9) * (F - 32);因为原因是运营商执行的顺序。在你的码分是正在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

+0

+1在线编译器和调试工具的省份链接 – 2013-04-10 06:46:01

+0

@RamDuttShukla谢谢 – 2013-04-10 06:47:24