Replace funciona até 999,00 porem 1.000,00 acima nao funciona... porque rsrsrs

12 respostas
N

estou tentando fazer um calculo usando replace, assim:

double TotalRec = Double.parseDouble(txtTotalRecebido.getText().replace(',','.')); 
        double TotalRet = Double.parseDouble(txtTotalRetirada.getText().replace(',','.'));
        double Saldo = TotalRec - TotalRet;
        DecimalFormat Formata = new DecimalFormat("#,##0.00");
        String saldo = Formata.format(Saldo);
        txtSaldo.setText(String.valueOf(saldo));
fico no aguardo por uma ajuda galera... wlw

12 Respostas

thiago.correa

Na documentação você encontra os esclarecimentos, use o replaceAll :wink:

maior_abandonado

debuga sua aplicação, ve o que esta sendo retornado pelos seus .getText() (s), coloca em linhas separadas cada parte do que esta na sua primeira e segunda linha ai…

N
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: multiple points
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1102)
thiago.correa

Exemplo de como transformar um texto em um double

import java.io.IOException;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;

public class Test {

	public static void main(String[] args) throws IOException {

		String texto = "1.500,59";// simula o texto digitado
		NumberFormat nf = NumberFormat.getNumberInstance(new Locale("pt_BR"));
		try {
			Double recebido = (Double) nf.parse(texto);
			System.out.println(recebido);
		} catch (ParseException e) {
			e.printStackTrace();
		}

	}
}
N
thiago.correa... kra está funcionando parcealmente...

String texto = txtTotalRecebido.getText();// simula o texto digitado NumberFormat nf = NumberFormat.getNumberInstance(new Locale("pt_BR")); try { Double TotalRec = (Double) nf.parse(texto); txtSaldo.setText(String.valueOf(TotalRec)); } catch (Exception e) { e.printStackTrace(); }

não estou conseguindo formatar o valor do txtSaldo…

o valor da txtTotalRecebido eh: 77.020,40

e a txtSaldo retorna 77.02

thiago.correa
import java.io.IOException;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.Locale;

public class Test {

	public static void main(String[] args) throws IOException {
		
		String texto = "77.020,40";// simula o texto digitado
		NumberFormat nf = NumberFormat.getNumberInstance(new Locale("pt", "BR"));
		try {
			Double recebido = (Double) nf.parse(texto);
			System.out.println(recebido);
		} catch (ParseException e) {
			e.printStackTrace();
		}

	}
}
N
<blockquote>import java.io.IOException;

import java.text.NumberFormat;

import java.text.ParseException;

import java.util.Locale;

public class Test {

public static void main(String[] args) throws IOException {   
       
    String texto = "77.020,40";// simula o texto digitado   
    NumberFormat nf = NumberFormat.getNumberInstance(new Locale("pt", "BR"));   
    try {   
        Double recebido = (Double) nf.parse(texto);   
        System.out.println(recebido);   
    } catch (ParseException e) {   
        e.printStackTrace();   
    }   

}

}

txtSaldo agora retorna assim:
77020.4

thiago.correa

Sim, é dessa maneira que um objeto double/float é representado! Caso você queira transformar um double/float em uma String formatada, use o método format do mesmo objeto NumberFormat

N

thiago e o seguinte... preciso transformar duas strings em double p eu subtrai-las e depois tornar o resultado da subtração em string novamente dessa forma:

double TotalRec = Double.parseDouble(txtTotalRecebido.getText().replace(',','.'));   
        double TotalRet = Double.parseDouble(txtTotalRetirada.getText().replace(',','.'));   
        double Saldo = TotalRec - TotalRet;   
        DecimalFormat Formata = new DecimalFormat("#,##0.00");   
        String saldo = Formata.format(Saldo);   
        txtSaldo.setText(String.valueOf(saldo));
thiago.correa

Cara, tu tá com a faca e o queijo na mão, faz uma força aí que tu consegue, o código que eu te passei, ele transforma um texto, por exemplo 1.234,56 para um double (cujo o valor vai ficar 1234.56, que é como um double é representado no java), faça isso com os dois valores que deseja subtrair, faça a subtração e armazene em uma 3ª variável, feito isso, você usa o método format para transformar um double em um número conforme a representação local (nesse caso, Brasil)

Tenta aí, não é difícil, só que você precisa se esforçar um pouco!

N

thiago… reconheço q faltou um pouco do meu empenho kara… deu tudo certo aki… valew de mais… muito obrigdo… ficou assim:

private void somaEntSaida(){ String text = txtTotalRecebido.getText();// simula o texto digitado String texto = txtTotalRetirada.getText();// simula o texto digitado NumberFormat nf = NumberFormat.getNumberInstance(new Locale("pt_BR")); DecimalFormat Formata = new DecimalFormat("##,###.00"); try { Double recebido = (Double) Formata.parseObject(text); Double retirada = (Double) Formata.parseObject(texto); Double Saldo = recebido - retirada; DecimalFormat Forma = new DecimalFormat("##,###.00"); String saldo = Forma.format(Saldo); txtSaldo.setText(String.valueOf(saldo)); if(Saldo <= 0){ txtSaldo.setBackground(new Color(250,250,250)); // fundo txtSaldo.setForeground(new Color(153,0,0)); // fonte }else if(Saldo > 0){ txtSaldo.setBackground(new Color(241,255,227)); // fundo txtSaldo.setForeground(new Color(145,0,215)); // fonte } } catch (Exception e) { e.printStackTrace(); } }

thiago.correa

Viu só, nada como um empurrão ehehehe
Mas assim cara, você não precisa usar a classe DecimalFormat se usar o NumberFormat, escolha entre uma ou outra!

Dando uma garimpada no teu código

String text = txtTotalRecebido.getText();// simula o texto digitado     
        String texto = txtTotalRetirada.getText();// simula o texto digitado     
        NumberFormat nf = NumberFormat.getNumberInstance(new Locale("pt_BR"));   
        try {   
            Double recebido = (Double) nf.parse(text);   
            Double retirada = (Double) nf.parse(texto);   
            Double Saldo = recebido - retirada;   
            String saldo = nf.format(Saldo);   
            txtSaldo.setText(saldo);
Criado 28 de abril de 2010
Ultima resposta 28 de abr. de 2010
Respostas 12
Participantes 3