Dúvida Java

Qual tipo utilizar para números com casas decimais ? BigDecimal, Float ou Double ?

Então Lucas, você pode utilizar qualquer um desses tipos de dados. Pra saber qual deles utilizar, vc deve levar em consideração a precisão (quantidade de casas decimais) necessária para tua aplicação. float e double são sempre aproximações utilizando o padrão IEEE 754. O tipo float utiliza 32 bits e consegue representar números de até 7 casas decimais. O double consome 64 bits e representa números de até 15 casas decimais. Já o BigDecimal tem precisão quase infinita, ou seja, teoricamente vc consegue representar números com bilhões de casas decimais. Porém, a aritmética de BigDecimals é bem mais lenta e também não rola utilizar os operadores + - * e /.

// Embora o construtor de BigDecimal também aceite double, 
// isso não é considerado boa prática. Use sempre que possível
// strings.
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");

// Somar a + b
a.add(b);

// Subtrair a - b
a.subtract(b);

Em linhas gerais, se for trabalhar com valores monetários, use BigDecimal. Para quase todo o resto, provavelmente float ou double serão suficientes.

boa pergunta, sempre utilizei double, utilizo BigDecimal pra arredontar mas o tipo de dados sempre double

Interessante o timing dessa pergunta Lucas, pois estava procurando a mesma coisa, mas para o Postgres. Desconheço como funciona no Java, mas uma das maiores preocupações nesse momento é a precisão das casas decimais e isso vai depender do caso de uso.

Em paralelo, se estiver precisando disso para mexer com valores monetários, sugiro usar um inteiro e na interface converter o valor.