Двойное значение возвращает 0 [дубликат]

Вот пример:

Double d = (1/3);
System.out.println(d);

Это возвращает 0, а не 0.33333 ... как и должно быть.

Кто-нибудь знает?

14.12.2008 06:43:44
@ ΦXocę 웃 Пепеупа ツ Это не дубликат. Этот вопрос является дубликатом этого вопроса. Посмотрите на даты до того, как вы
Zoe 16.07.2017 09:23:57
3 ОТВЕТА
РЕШЕНИЕ

Это потому , что 1и 3рассматриваются как integersесли не указано иное, поэтому 1/3вычисляется в integer 0который затем формуют в double 0. Чтобы это исправить, попробуйте (1.0/3)или, возможно, 1D/3явно заявите, что вы имеете дело с двойными значениями.

38
14.12.2008 07:13:53

Если у вас есть ints, которые вы хотите разделить с помощью деления с плавающей точкой, вам придется привести intк double:

double d = (double)intValue1 / (double)intValue2

(На самом деле, я полагаю , что только кастинг intValue2должен быть достаточен intValue1для doubleавтоматического кастования).

12
14.12.2008 07:00:27

Используйте double, а не Double, если вам не нужно использовать эти значения в объектном смысле. Будьте в курсе концепций автобокса

1
14.12.2008 07:05:10
ОП спрашивал о методах усечения в Java и о том, почему деление целых чисел обрезается, даже если оно хранится в двойном числе; не об автобоксе.
ameed 23.07.2013 03:59:20