Por que a divisão do Java está quebrada?
Eu sou um desenvolvedor php experiente apenas começando a aprender Java. Estou seguindo alguns cursos da Lynda no momento e ainda estou nos estágios iniciais. Estou escrevendo exemplos de programas que solicitam informações do usuário e fazem cálculos simples e outras coisas.
Ontem me deparei com esta situação:
double result = 1 / 2;
Com meu cérebro de homem das cavernas, eu pensariaresult == 0.5
, mas não, não em Java. Aparentemente1 / 2 == 0.0
. Sim, eu sei que se eu mudar um dos operandos para o dobro, o resultado também será o dobro.
Isso me assusta, na verdade. Não posso deixar de pensar que isso está muito quebrado. É muito ingênuo pensar que uma divisão inteira resulta em um inteiro. Eu acho que é raramente esse o caso.
Mas, como o Java é muito utilizado e a busca por 'por que a divisão do java está quebrada?' não produz nenhum resultado, provavelmente estou errado.
Minhas perguntas são:
Por que a divisão se comporta assim?Onde mais posso esperar encontrar um comportamento tão mágico / vodu / inesperado?