Duvida BigDecimal ( de novo >< )

4 respostas
P

Opa :smiley:

Amigos…to com muitas dúvidas aqui devido aos problemas que tenho encontrado:

  • No meu banco de dados, tenho um registro de valor = 75.28 e outro valor de 76.00

Qdo eu pego BigDecimal do valor 75.28, normalmente ele vem com 75.[telefone removido] e se eu tento arredondar usando o BigDecimal.ROUND_FLOOR, ele joga 1 centavo a mais…eu queria simplesmente obter 75.28 para poder fazer minhas contas…

Se eu tento usar Double no valor 76.00, ele me corta o último zero e quando eu exibo na tela, ele fica com um digito só…

O melhor é se trabalhar com BigDecimal para contas? Como q eu pego o valor somente com 2 digitos e sem arredondamentos?

[]'s

4 Respostas

ajfilho

Se fores usar double, aplica uma máscara para jogar o valor na tela

Por exemplo:

import java.text.DecimalFormat;
import java.text.NumberFormat;

/**
 *
 * @author AJFILHO
 */
public class DoubleClasseFormat {
    public static void main(String[] args) {
        NumberFormat formatado = new DecimalFormat("#,##0.00");
        double d = 19254.0;
        System.out.println("Número sem máscara: " + d);
        System.out.println("Número com máscara: " + formatado.format(d));
    }
}

Resultado na tela:

compile-single:
run-single:
Número sem máscara: 19254.0
Número com máscara: 19.254,00
BUILD SUCCESSFUL (total time: 0 seconds)

Abraços!

F

Tá meio estranho isso ai. Veja se o seu banco já não está guardando o valor como 75.289999999 e na sua visualização ele esteja truncando o valor. Pois ao que me parece é este o caso.

qmx

cara, usa o método setScale(2) antes de fazer qualquer operação
com isso vc já definiu a precisão e boas

P

só com setScale não dá pra fazer contas e eu recebo exceção ArithmeticException se eu tentar trabalhar com o BigDecimal sem usar algum arredondamente

ps.: to usando java 1.4

Criado 11 de dezembro de 2008
Ultima resposta 11 de dez. de 2008
Respostas 4
Participantes 4