Decimalformat e double

3 respostas
E

Bem minha gente, eu precisei fazer uma aplicação que envolvia reais, eu então assim que fornecia o double com o resultado da conta eu formatava o valor para reais 30,21 e fazia a conta com o double que ficava por exemplo 30.216 bem, com o decorrer dos calculos quanto exibia o valor final não batia com as somátorias exibidas, então pensei em usar os valores formatados ai encontrei um problema
quando o DecimalFormat formata o valor ele usa , e quando tento converter a String que ele gera para double ele não aceita a , pois usa somente o . assim como 30.216 e se eu tentava passar o 30,21 ele não converte, alguem sabe o que posso fazer para manipular esse tipo de problema, quero usar os double com apenas duas casas ou conseguir transformar esse valor formatado(String com virgula) novamente para double.

3 Respostas

Deh

se você quer transformar a string com virgula para double novamente, você pode fazer assim =P

public class test {
	public static void main(String[] args) {
		String nome = "10,60";
		System.out.println(nome);
		Double number = Double.parseDouble(nome.replace(',','.')); 
		System.out.println(number);
	}
}

acredito que isso resolva parte do seu problema =S

E

Consegui, de começo deu um erro mas resolveu o problema, valew e realmente vi que o double não é bom para esse tipo de aplicação vou estudar esse outro também valew aos dois brothers por responder minha pergunta valew galera, qualquer coisa é só dar um toque :slight_smile:

R

Pelo que eu percebi na sua descrição do problema, você está trabalhando com valores financeiros certo?
Então vou te dar uma dica: não utilize double nem float para valores financeiros devido a imprecisão da máquina. Para trabalhar com valores financeiros prefira BigDecimal.
De uma olhada na API, com ele você não terá mais problemas de ponto flutuante, etc.

Sei que esta não é a sua dúvida, mas acho que é uma dica válida.

Criado 2 de outubro de 2006
Ultima resposta 4 de out. de 2006
Respostas 3
Participantes 3