Como o divisor era int, os elementos decimais sao automaticamente ignorados, colocando-se um double, fazemos um cast de int pra double.
ViniGodoy
Em outras palavras:
O que ocorre é que você tinha tanto o dividendo como o divisor como inteiros. Portanto, o java entende que você que um resultado inteiro (mesmo que depois você vá atribuir isso a um double).
Quando o colega fez o cast de um dos valores, a conta passou a ser entre um inteiro e um double. E o resultado será double.
Muito cuidado quando você for fazer contas usando valores fixos também. Se seu interesse é ter resultados em double, acostume-se a escrever o “.0” após o valor:
double x = 1237 / 1000; //Errado, o resultado será 1
double x = 1237 / 1000.0; //Certo, o resultado será 1.237