Teste de números em BigDecimal

2 respostas
R
Fiz esse teste:
public class TesteArredondamento {

	public static void main(String[] args) {
		BigDecimal a = new BigDecimal(4.01);
		System.out.println(a);	
	}

}
O resultado foi 4.0099999999999997868371792719699442386627197265625 Alguém poderia me explicar por que aconteceu isso? Eu gostaria de salvar um BigDecimal em um campo NUMERIC(18,2) do firebird pelo hibernate. Após salvar, eu irei fazer a pesquisa. Creio que dessa forma terei problemas. Ex: preciso salvar a altura 4,02. Porém, antes de fazer isso, preciso verificar se o 4,02 já está no banco. Alguma dica para evitar dores de cabeça e erros no programa?

2 Respostas

pcalcado

Olá,

Utilize o cosntrutor com String numérica, fazer o que você fez é quase o mesmo que usar floats diretamente emte rmos de arredondamento :wink:

R

Obrigado. É isso mesmo!
Depois que percebi que fazendo isso eu estaria utilizando o construtor que recebe double como parâmetro, vi na documentação que a melhor forma de fazer isso é usando o construtor que recebe String. Por exemplo, new BigDecimal(“4.3”).

Estou percebendo que estou meio malandro :oops:
Lá na documentação do BigDecimal(double) fala exatamente o que eu perguntei :!:

Criado 8 de agosto de 2005
Ultima resposta 8 de ago. de 2005
Respostas 2
Participantes 2