Java: почему эта двойная переменная выходит 0?

Я использую окончательную двойную проверку Java 1.6 = 3/4; System.out.println(проверить);

Консоль показывает: 0.0

Почему это происходит? Разве не должно получиться 0,75?


person user3494047    schedule 05.04.2014    source источник
comment
Затем целочисленное деление преобразуется в double.   -  person m0skit0    schedule 05.04.2014
comment
Я просто подумал, что никто не спрашивал об этом пару дней.   -  person Dawood ibn Kareem    schedule 05.04.2014


Ответы (4)


Сделайте это:

double check = 3.0 / 4;

и это сработает. Вы получили 0, потому что 3 / 4 — это целочисленное деление, значение которого равно 0.

person Rohit Jain    schedule 05.04.2014

Поскольку оба являются целыми, следовательно, результат также будет целым.

Приведите любой из них к типу double следующим образом:

double check = (double)3 / 4;
person Braj    schedule 05.04.2014

При выполнении:

3 / 4

вы выполняете целочисленное деление, поскольку 3 и 4 являются константами int, а не double. Таким образом, результатом является int. Но поскольку вы назначаете его double, результат деления будет повышен до double. Но в этот момент уже слишком поздно, так как целочисленное деление даст 0!

Вам нужно сделать:

3.0 / 4

для достижения желаемого результата, так как в этом случае 4 автоматически будет повышен до double, а результатом деления также будет double.

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

3.0 / 4.0
person fge    schedule 05.04.2014

Вы делите целые числа и присваиваете результат double. В java деление двух значений int всегда дает int.
Поэтому измените оператор double check = 3 / 4; на double check = 3.0 / 4;

person Prabhaker A    schedule 05.04.2014