Вопрос-ответ

How to make the division of 2 ints produce a float instead of another int?

Как заставить разделение на 2 целых числа создавать float вместо другого int?

В другом упражнении Брюса Экелса по вычислению скорости, v = s / t где s и t - целые числа. Как мне сделать так, чтобы при делении получался float?

class CalcV {
float v;
float calcV(int s, int t) {
v = s / t;
return v;
} //end calcV
}

public class PassObject {

public static void main (String[] args ) {
int distance;
distance = 4;

int t;
t = 3;

float outV;

CalcV v = new CalcV();
outV = v.calcV(distance, t);

System.out.println("velocity : " + outV);
} //end main
}//end class
Переведено автоматически
Ответ 1

Сначала просто преобразуйте один из двух операндов в float .

v = (float)s / t;

Приведение имеет более высокий приоритет, чем деление, поэтому происходит перед разделением.

Другой операнд будет эффективно автоматически преобразован компилятором в float, потому что правила говорят, что если любой из операндов имеет тип с плавающей запятой, то операция будет операцией с плавающей запятой, даже если другой операнд является целым. Спецификация языка Java, §4.2.4 и § 15.17

Ответ 2

Попробуйте:

v = (float)s / (float)t;

Преобразование целых чисел в float позволит выполнять деление с плавающей запятой.

Однако на самом деле вам нужно привести только одно значение.

Ответ 3

Преобразуйте одно из целых чисел в float, чтобы принудительно выполнить операцию с математикой с плавающей запятой. В противном случае всегда предпочтительнее целочисленная математика. Итак:

v = (float)s / t;
Ответ 4

Чтобы уменьшить влияние на читаемость кода, я бы предложил:

v = 1d* s/t;
java