Trabalhando com valores em reais

Galera qual a melhor forma de trabalhar com valores em reais?

Tipo estou desenvolvendo um sistema e vou precisar trabalhar com valores o que devo usar double, float, integer …, o que devo usar ?

Ou float ou double, que são tipos primitivos para ponto flutuante.

Abraços,

Boa Tarde

Cara tambem tive a mesma duvida que vc, então li sobre o assunto e descobri que o padrão para trabalhar com valores é o double, qualquer duvida pega um livro e da uma lida na parte de tipos primitivos da linguagem.

Falou…

Quando precisei trabalhar com valores monetários utilizei BigDecimal eu acho.
Dá uma conferida nessa classe.

Sorte

mais qual o melhor?
e depois para deixar em formato R$0.000,00 como faço?

sem dúvida o double.

Mas pelo amor de Deus… não me vai fazer arrendondamento no meio de um calculo… calcula tudo primeiro e so arredonda pra exibir ou derrepente fazer alguma comparação.

Ja vi muito código mal feito por conta de arredondamento no meio do caminho.

Pra mim, arredondar só existe quando for exibir em tela ou em relatório, se for pra salvar no banco, defina um número máxino de casas deciamis e sempre salve com ele.

Outra coisa, procure usar a DecimalFormat para trazer o R$


DecimalFormat df = DecimalFormat.getCurrencyInstance();

String valor = df.format(45.7263);


Fui !

Então eu estou no caminho certo pq estou usando double 25.00

Então só preciso saber como fazer para que o usuario ao digitar um valor não precise digitar o ponto que ele possa digitar a virgula e ao retornar um valor do banco apareça em formato R$ 0.000,00

entenderam?

pode utilizar o replace da classe String pra trocar vírgula por ponto…

[quote=diogoprosoft]Galera qual a melhor forma de trabalhar com valores em reais?

Tipo estou desenvolvendo um sistema e vou precisar trabalhar com valores o que devo usar double, float, integer …, o que devo usar ?[/quote]

Você deve utilizar BigDecimal para trabalhar com dinheiro.
Na realidade vc deveria usar o padrão Money, mas no caso de não querer, use BigDecimal.

Para formatação pode usar DecimalFormat tal como para double ou float

Mas não preciso utilizar mascaras?

eu costumo usar BigDecimal, e tratar as datas com JSF, com <f:convertNumber>.
onde falo tipo, currency, maximo de caso, minimo, e ai vai.

fica a dica.

Andei dando uma olhada no banco de dados PostgreSql, tem lá uma opção money com tratar esse tipo de dados em java ?

Se essa opção money só definir tipos de valor com ponto flutuante e mais nada essa sua pergunta é a mesma feita anteriormente, mas de uma outra forma.
Vê direitinho o que essa opção money especifica, pode ser que você mesmo consiga essa resposta.

Abraços,