Вот пример:
Double d = (1/3);
System.out.println(d);
Это возвращает 0, а не 0,33333... как должно быть.
Кто-нибудь знает?
Вот пример:
Double d = (1/3);
System.out.println(d);
Это возвращает 0, а не 0,33333... как должно быть.
Кто-нибудь знает?
Это связано с тем, что 1
и 3
обрабатываются как integers
, если не указано иное, поэтому 1/3
оценивается как integer
0
, которое затем преобразуется в double
0
. Чтобы это исправить, попробуйте (1.0/3)
или 1D/3
явно указать, что вы имеете дело с двойными значениями.
Если у вас есть int
, которые вы хотите разделить с помощью деления с плавающей запятой, вам придется преобразовать int
в double
:
double d = (double)intValue1 / (double)intValue2
(На самом деле, я считаю, что только приведения intValue2
должно быть достаточно, чтобы intValue1
автоматически преобразовалось в double
.)
Используйте double, а не Double, если вам не нужно использовать эти значения в объектном смысле. Помните о концепциях Autoboxing.