Согласно Javadoc
"Если хотя бы один из операндов числового оператора имеет тип double, то
операция выполняется с использованием 64-битной арифметики с плавающей точкой, и результат
числовой оператор является значением типа double. Если другой операнд не является двойным, это
сначала расширен (§5.1.5), чтобы набрать double с помощью числового продвижения (§5.6). "
Вот источник