Somando double

Estou com um probleminha e não encontrei a solução. Alguem pode me ajudar?

double valor1 = 32.15;
double valor2 = 7.98;
double result = valor1 + valor2;
System.out.println("==> " + result);

==> 40.129999999999995

Preciso fazer soma de double e quando eu faço desses valores da o resultado: 40.129999999999995.

Como eu posso resolver isso?

Desde já agradeço,

Leonardo

Você quer mostrar o resultado da soma com menos casas decimais?
É isso?
Se for, pode utilizar a classe Format.

Kra fiz um aplicativozinho simples pra vc ver como funciona pra diminuir as casas decimais.

import java.text.DecimalFormat; // importa a classe q fara a aproximacao

public class Duvida {
   public static void main( String[] args ) {
   
     double num1 = 23.65;
     double num2 = 545.689;
     double soma;
     
     soma = num1 + num2;
// Aqui ele cria uma nova instancia do metodo DecimalFormat
// note q vc delimita as casas decimais
     DecimalFormat aproximador = new DecimalFormat( " 0.00 " );

// repare o q e feito na variavel soma
     System.out.println( " A soma eh => " + aproximador.format( soma ) );
     
   }
}

Espero q tenha ajudado…
Qualquer duvida posta ai q nos damos um jeito

Abracao e te +

Colega,

Li num livro de um tal de Joshua não sei o que - Effective Java - que para cálculos monetários ( é isto que você quer ? ) devemos usar a classe BigDecimal.

O livro é bom, pois tem “conselhos” ( boas práticas ) que evitam dores de cabeça.

Abraço,

Márcio

É, o Joshua Bloch fala para evitar o uso de double quando é necessário fazer contas mais precisas.
Porém, para o caso de cálculos monetários, a dica que ele dá é usar int ou long e fazer os cálculos em centavos mesmo. Utilizar BigDecimal para coisas relativamente simples acaba dando mais trabalho e fica mais lento. Só se tiver mais do que 18 dígitos é necessário utilizá-la.

Obrigado Bani,

Li o livro mas fiz alguma confusão. Depois me lembrei dele ter dito para usar int. Eu tenho um projeto no qual estou usando BigDecimal. Vou revê-lo , ou melhor dizendo, fazer uma refatoração ( é esta a tradução para refactoring , ou estou fazendo outra confusão ? )

Abraço

Márcio