Olá pessoal, gente gostaria de saber uma coisa; se todo literal de ponto flutuante é por padrão do tipo double, por que existe então o tipo float?
O tipo float ocupa 32 bits, enquanto que o double ocupa 64 bits. Logo, a diferença é a quantidade de números que pode ser representada por cada um e a memória consumida para armazenar esse número.
Note que a especificação do Java (assim como de outras linguagens) surgiu numa época muito diferente da atual, em que a preocupação com uso de memória e desempenho era mais relevante (hoje ainda é, mas não para a maioria dos programadores). Muitos computadores eram de 32 bits, então usar uma notação de 32 bits facilita também o uso do processador, já que as instruções não precisam de nada especial para ser trabalhadas pela CPU.
Note que você pode chegar à conclusões parecidas para diversos outros tipos. Ex: se existem BigDecimal e BigInteger, que suportam números bem maiores que long e double, pra que ter long, double, int e afins?
Abraço.
O float existe para quando você quiser utilizar somente 32 bits para o número de ponto flutuante, o double utiliza 64 bits.