Я использую окончательную двойную проверку Java 1.6 = 3/4; System.out.println(проверить);
Консоль показывает: 0.0
Почему это происходит? Разве не должно получиться 0,75?
Я использую окончательную двойную проверку Java 1.6 = 3/4; System.out.println(проверить);
Консоль показывает: 0.0
Почему это происходит? Разве не должно получиться 0,75?
Сделайте это:
double check = 3.0 / 4;
и это сработает. Вы получили 0
, потому что 3 / 4
— это целочисленное деление, значение которого равно 0
.
Поскольку оба являются целыми, следовательно, результат также будет целым.
Приведите любой из них к типу double следующим образом:
double check = (double)3 / 4;
При выполнении:
3 / 4
вы выполняете целочисленное деление, поскольку 3
и 4
являются константами int
, а не double
. Таким образом, результатом является int
. Но поскольку вы назначаете его double
, результат деления будет повышен до double
. Но в этот момент уже слишком поздно, так как целочисленное деление даст 0!
Вам нужно сделать:
3.0 / 4
для достижения желаемого результата, так как в этом случае 4
автоматически будет повышен до double
, а результатом деления также будет double
.
Чтобы быть полностью уверенным в том, что происходит, и если вам нравится симметрия, вы также можете написать:
3.0 / 4.0
Вы делите целые числа и присваиваете результат double. В java деление двух значений int всегда дает int.
Поэтому измените оператор double check = 3 / 4;
на double check = 3.0 / 4;
double
. - person m0skit0   schedule 05.04.2014