2015-02-13 3 views
1

Я запускаю следующую программу, и возвращаемое значение должно быть deltaTemp Result: 300, но я получаю deltaTemp Result: 0.0. Я что-то теряю здесь? У меня нет ошибок ...Возврат неправильного значения в базовой программе Java

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; 

} 

ответ

1

Выражение (5/9) представляет собой целое деление, которое приводит к нулевому значению. Вы можете использовать double литералов вместо:

deltaT = ((meltTemp - weldPadTemp + 457) * (5.0/9.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 
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; 

} 

aritmetic выражение (5/9) возвращает 0, так как Num целое число. Поэтому вы должны сделать один из них float (add .0)

0

Вы умножаетесь на 5/9 как int, результатом которого является 0.

Включите второй операнд как double.

Например:

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

Выход

300.0 
0

5/9 равна 0, потому что 5 и 9 являются целыми числами, то результат вычисляется как int тоже. Это повлияет на deltaT, так как умножение любого числа на 00.

Чтобы сделать их double, введите D суффикс после каждого номера.

5D/9D 
Смежные вопросы