不应用Java中运算符的优先级

时间:2012-11-14 12:45:52

标签: java operators operator-precedence

我有这段代码并根据此页here 下面的输出应该是正确的给我,98.24但这给了我68.8,我在这里缺少什么?

public class Qn1 
{
    public static void main(String[] args)
    {
       double cel = 36.8;
       double fah = ((9 / 5 )* cel) + 32;
       System.out.println(cel + "deg C =" + fah +" deg F");
    }
}

6 个答案:

答案 0 :(得分:10)

在括号中使用9.0 / 5代替9 / 5

9 / 5是整数除法,其值为1。结果就是如此。您只需要将 numerator 分母中的一个 double / float 值强制执行浮点除法

((9 / 5 ) * cel) + 32  = (1 * 36.8) + 32 = 68.8

你需要的是: -

((9.0 / 5 ) * cel) + 32  = (1.8 * 36.8) + 32 = 66.24 + 32 = 98.24

答案 1 :(得分:1)

double fah = ((9.0 / 5 )* cel) + 32;

答案 2 :(得分:1)

问题是您没有使用double,而是int。使用

double fah = ((9d / 5d) * cel) + 32d;

答案 3 :(得分:1)

使用至少一个double操作数:

double fah = 9.0 / 5 * cel + 32;

double fah = 9 / 5.0 * cel + 32;

double fah = 9.0 / 5.0 * cel + 32;

这三种方式都有效,请注意括号是不必要的。

答案 4 :(得分:0)

9是整数,因此5:所以9/5使用整数除法,这意味着它导致1(整数)而不是1.8(浮点数)

1*36.8 +32 = 68.8

答案 5 :(得分:0)

整数运算的9/5是1