Java Int против Double - PullRequest
       12

Java Int против Double

0 голосов
/ 15 мая 2011
public double calc(int v1) {
return v1 / 2 + 1.5;
}


public double cald (double v) {
return v / 2 + 1.5;
}

Функции возвращают одинаковый результат?

Я бы сказал, что они не возвращают тот же результат, поскольку вторая функция будет включать десятичную точку, где вторая функция будет округлять число вверх.

Это правильно?

Ответы [ 4 ]

3 голосов
/ 15 мая 2011

при делении a на b т.е. a/b

, если , оба a и b равны int, тогда результат будет int
else любой или оба a & b равны double, тогда результат будет double

Edit:

Также см. Мой ответ на этот вопрос Простая проблема деления

2 голосов
/ 15 мая 2011

Они не: см. Пример на IDEONE , клонируйте его и играйте с ним.

System.out.println(calc(1));// gives 1.5
System.out.println(cald(1.0));// gives 2.0
1 голос
/ 15 мая 2011
int v1 = 1;
return v1 / 2 + 1.5; // = 1.5

это целое число, деленное на целое число более чем в два раза. Или в вашем случае 1/2, что это 0,5, но это деление между целыми числами, поэтому будет 0, больше 1,5, вернуть 1,5.

double v = 1.0;
return v / 2 + 1.5; // = 2.0

В этом случае деление делается на двойное и целое, возвращая двойное значение 0,5, а при суммировании 1,5 возвращается 2,0.

0 голосов
/ 15 мая 2011

Они не возвращают то же самое. / по умолчанию - целочисленное деление, если числа являются целыми числами, то есть результат a/2 является целым числом без напоминания, если a является целым числом. в то время как если а является двойным, то результат этого деления является двойным.

5/2 = 2
5.0/2 = 2.5
...