Trabalhando com valores monetáriose e Vectors

5 respostas
M

E ae galera, tenho duas dúvidas simples:
1) -tenho uma váriavel para armazenar um valor, no caso o valor de 1 preço:

private double preco;

e claro seus setters e getters

public double getPreco() {        return preco;    }

public void setPreco(double preco) {        this.preco = preco;    }

e as gravo no SQL Server num campo decimal(8,2);

Suponhamos que eu grave um preço - 1.50 -, dentro do studio do banco quando eu executo um select ele me retorna o valor 1.50 corretamente, mas quando exporto o select para a aplicação (JAVA) e mando exibir em um JTextField, o resultado obitido é - 1.5 - e não - 1.50 - como deveria ser, alguém sabe me informar o por quê e também como concertar?

2)- Tenho um Vector que é carregado com dados de 2 tabelas do BD, se o Vector recebe somente Strings das duas tabelas, como posso fazer para ordená-lo alfabeticamente?

5 Respostas

ViniGodoy

1,5 e 1,50 refere-se exatamente ao mesmo valor. :shock:

Use o método Collections.sort para ordenar qualquer lista.
Agora, o Vector é uma classe que não é recomendada desde o Java 1.2. No lugar, vc deve usar ArrayList.
Esse post mostra como, além de ter no meio o exemplo de como se ordena um List:
http://www.guj.com.br/posts/list/74068.java#389435

Outra alternativa seria usar a cláusula ORDER BY na hora de buscar os dados do banco.

M

vlw as dicas

agora… quando trata-se de um sistema a ser operado por leigos, possivelmente pessoas com deficiencia mental, pois é para um projeto de profissionalizaçao de deficientes, seria preciso por questoes obvias trabalhar com o valor monetário exibindo o 0 a esquerda, mesmo que matemáticamente ele n valha nada…

ViniGodoy

Use o método String.format ou a classe NumberFormatter para fazer a formatação com zeros a esquerda. Via de regra, os bancos de dados e o Java guardam valor, não formatos. Você só formata o dado na hora de envia-lo para tela. :slight_smile:

sergiotaborda

Use JFromatedField. Este campo é em tudo igual ao JTextField mas permite formatar. usando o SimpleNumberFormat vc pode estipular quantos zero tem que aparecer À direita usando uam expressão de formato. Normalmente se usa “#.###,00” para mostras sempre duas casas decimais e usar . para separar milhares.

M

sergiotaborda:
mynhok:

Suponhamos que eu grave um preço - 1.50 -, dentro do studio do banco quando eu executo um select ele me retorna o valor 1.50 corretamente, mas quando exporto o select para a aplicação (JAVA) e mando exibir em um JTextField, o resultado obitido é - 1.5 - e não - 1.50 - como deveria ser, alguém sabe me informar o por quê e também como concertar?

Use JFromatedField. Este campo é em tudo igual ao JTextField mas permite formatar. usando o SimpleNumberFormat vc pode estipular quantos zero tem que aparecer À direita usando uam expressão de formato. Normalmente se usa “#.###,00” para mostras sempre duas casas decimais e usar . para separar milhares.

Mas não serão somente 0 antes ou depois da virgula, e não é possível estipular o valor, se serão milhares, dezenas ou centenas, e os valores poderão ser quaisquer um, ou seja, eu preciso que o JTextField me mostre 2 casas decimais de qualquer maneira. se o va lor for 0.5 eu preciso de 0.50, se for 3.5 eu preciso de 3.50…
alguem sabe como?

Criado 11 de abril de 2008
Ultima resposta 12 de abr. de 2008
Respostas 5
Participantes 3