在基本Java程序中返回错误的值

时间:2015-02-13 14:07:41

标签: java

我运行以下程序,返回的值应为deltaTemp Result: 300,但我得到deltaTemp Result: 0.0。我错过了一些基本的东西吗?我没有收到任何错误......

static double weldPadTemp = 177;
static double meltTemp = 260;

public static void main(String[] args){

    deltaTemp(weldPadTemp, meltTemp);

}

public static double deltaTemp(double weldPadTemp, double meltTemp){
    double deltaT;
    deltaT = ((meltTemp-weldPadTemp+457)*(5/9));

    System.out.println("deltaTemp Result:" + deltaT);

    return deltaT;

}

5 个答案:

答案 0 :(得分:4)

5/9被评估为0,因为两个操作数都是int值。

一些例子:

int x = 5/9;
System.out.println(x);

double y;
y = 5/9;
System.out.println(y);

//5.0 is a double value so the operation is done in double arithmetics
y = 5.0/9;
System.out.println(y);

输出:

0
0.0
0.5555555555555556

答案 1 :(得分:1)

表达式(5 / 9)是整数除法,它导致零值。您可以改为使用double文字:

deltaT = ((meltTemp - weldPadTemp + 457) * (5.0 / 9.0));

答案 2 :(得分:0)

public static double deltaTemp(double weldPadTemp, double meltTemp){
    double deltaT;
    deltaT = ((meltTemp-weldPadTemp+457)*(5.0/9));

    System.out.println("deltaTemp Result:" + deltaT);

    return deltaT;

}

算术表达式(5/9)返回0,因为两个num整数。所以你应该让其中一个浮动(添加.0)

答案 3 :(得分:0)

您将5/9乘以int,其结果为0

将您的第二个操作数转换为double

例如:

deltaT = ((meltTemp-weldPadTemp+457)*((double)5/9));

<强>输出

300.0

答案 4 :(得分:0)

5/9等于0,因为59是整数,结果也计算为int。 这会影响deltaT,因为乘以任意数字 0会返回0

要使它们double,请在每个数字后添加D后缀。

5D / 9D