Ajuda uma pobre iniciante com calculo

5 respostas
B
Pessoal to com um problema aqui iniciante ;/ veja so tenho 3 jtextfield

1 Jtextfield - Recebe um int 5 (que no caso eh 5%)

2 Jtextfield - Recebe o valor no qual irei tirar 5% dele (que no caso e 150,00)

3 Jtextfield - Aparecer o resultado

No caso eu tenho o 1 jtextfield com o valor de 5% e no jtextfield 2 digito um valor text(150.00)

if ("5%".equals(salario.getTipo())) {
                try {
                    BigDecimal bd = (BigDecimal) df2.parse(text);
                    BigDecimal cincoPctDeValor = bd.multiply(new BigDecimal("0.05"));

                    String cincoFormatado = cincoPctDeValor.toString().replace("00.", ".");
                    String cincoFormatado2 = cincoPctDeValor.toString().replace("0.00", ".00");

                    System.out.println("bd = "+bd);
                    System.out.println("cincoPctDeValor = "+cincoPctDeValor);
                    System.out.println("cincoFormatado = "+cincoFormatado);
                    System.out.println("cincoFormatado2 = "+cincoFormatado2);
                    
                } catch (ParseException ex) {
                    ex.printStackTrace();
                }
            }

ele me retorna isso

text = 150.00(valor antes de retirar o ponto)

bd = 15000(valor com o . retirado)

cincoPctDeValor = 750.00(primeiro retorno)

cincoFormatado = 750.00(segundo retorno)

cincoFormatado2 = 75.00(terceiro retorno) esse aqui esta certo no caso

mas se eu colocar no jtextfield1 o valor de 100,00 ele me retorna isso

text = 100.00
bd = 10000
cincoPctDeValor = 500.00
cincoFormatado = 5.00 no caso esse aqui seria certo
cincoFormatado2 = 50.00

como podem ver cada hora um da certo, com faco para ajeitar isso? obrigado pela atencao

5 Respostas

A

c eu entendi direito (saber quanto é 5% de 150), é melhor você ter 3 campos int, o primeiro com o 5, o segundo com o valor e o terceiro como resultado.

pega e faz:

campo3.setText((primeiroCampo * 100) / segundo campo);

Se quiser ao contrário (saber quanto vai valei determinada quantia com um desconto de 5%) faz:

int ab = campo1 / 100; int cd = 1 - ab; campo3.setText(campo2 * cd);

Acho que é isso (aprendi isso no EM). Faz uns testes para ver se a conta deu certo.

Dica: se quiser formatar o campo 1504 -> 1.504,00, faça isso apenas no final.

qualquer coisa, estamos aí!
at+

B

Veja so, consegui faze o calculo certinho depois de dias e mais dias para conseguir isso, agora consigo um resultado do tipo int que obtem o valor eX:7525 que no caso era para ser 75.25 como insiro o ponto antes das 2 ultimas casas decimais tipo se o resultado for 156723 ele inserir assim 1.567.23 sei que existe a classe DecimalFormat mas estouy apanhando alguem pode da uma forca? obrigada

A

Olha, se for apenas o .(ponto) dos centavos, pode dividir o número por 100 (bem mais rápido e mais prático do que ficar formatando).

156723 / 100 = 1567.23

Mas se quiser também o ponto do mil e milhão, aí vai ter que formatar mesmo.

B

entao vou precisar sim infelismente huHAeuHAueha como converteria um resultado desse 11599.90 para que aceita-se ponto depois de cada ### casas decimais alem dos centavos? obrigada pela atencao

A

Links que vão te ajudar:
http://www.guj.com.br/article.show.logic?id=1
http://javafree.uol.com.br/artigo/5090/Introducao-a-Expressoes-Regulares-com-Java.html
http://javacomfarinha.blogspot.com/2007/02/introduo-expresses-regulares-em-java.html

OBS: se você tiver programando com Interface Gráfica (Swing), você pode usar o jFormattedTextField (eu acho mais fácil usar ele do que Expressões Regulares, outros não, vai depender de vc).

flw

Criado 11 de setembro de 2009
Ultima resposta 15 de set. de 2009
Respostas 5
Participantes 2