Dividindo números formatados como moeda

4 respostas
R

Pessoal estou tentando fazer uma aplicação que divide o valor total pela quantidade (tem que me dar o valor unitário) com o JFormattedTextField do tipo personalizado (0,00), está assim:

public class valores extends javax.swing.JFrame {

double qtd, tot, unit, res;

// (… apaguei parte do código pra não ficar muito grande)

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

    qtd = Double.valueOf(jTqtd.getText());   
    tot = Double.valueOf(jFTotal.getText());   
    res = tot / qtd;
    
    jFUnit.setText(String.valueOf(res));
    
    
    
}

:shock:

4 Respostas

sf.marcius

usa um DecimalFormat pra fazer o parse dos valores dos textfields:

DecimalFormat df = (DecimalFormat) DecimalFormat.getNumberInstance();
        df.setParseBigDecimal(true);

        String testQuant = "10";
        String testTotalValue = "9,90";

        BigDecimal qtd = (BigDecimal) df.parse(testQuant);
        BigDecimal tot = (BigDecimal) df.parse(testTotalValue);
        BigDecimal res = tot.divide(qtd, MathContext.DECIMAL64);

        System.out.println(res.toPlainString());
R

Obrigado sf.marcius funcionou, veja como ficou o código. Como é um aplicativo que faz vários cálculos ao mesmo temo, se eu fizer um código desse para cada cálculo vai ficar gigante minha aplicação, eu queria saber se tem um jeito de fazer a mesma fórmula só que com menos código.

DecimalFormat df = (DecimalFormat) DecimalFormat.getNumberInstance();
    df.setParseBigDecimal(true);
    
    String Quant = String.valueOf(jTqtd.getText());
    String TotalValue = String.valueOf(jFTotal.getText());

    BigDecimal qtd = null;
    try {
        qtd = (BigDecimal) df.parse(Quant);
    } catch (ParseException ex) {

    }
    BigDecimal tot = null;
    try {
        tot = (BigDecimal) df.parse(TotalValue);
    } catch (ParseException ex) {

    }

        BigDecimal res = tot.divide(qtd, MathContext.DECIMAL64);
    
        jFUnit.setText(res.toPlainString());
sf.marcius

Divide and conquer meu amigo :slight_smile:

identifique as porções de código que se repetem e que podem ser parametrizadas e crie métodos privados.

[]s

samirrolemberg

Use o JMoneyField (pesquisa aí no forum) que já te retorna uma string 0.00 apartir do getText do componente.

aí é só usar no seu float, double, ou bigdecimal.

=)

Criado 29 de novembro de 2011
Ultima resposta 30 de nov. de 2011
Respostas 4
Participantes 3