Formatação de moeda

10 respostas
Schoker

Bom dia pessoal…

Alguem sabe como eu posso formatar um numero para moeda?

Ex:

De: 1692,8
Para: 1.692,80

Sem cifrao e com 2 casas depois da virgula…

obs: eu tentei com o formatCurrency mas ele poem cifrao…e tentei com formatNumber mas ele nao poem 2 casas depois da virgula…

Desde já agradeço!

10 Respostas

jzaires

Schoker dá uma olhada nesse post aqui do GUJ:

http://www.guj.com.br/posts/list/215186.java

Espero ter ajudado.

Schoker

Putss…vlww…mas infelizmente nao da…pq eu estou usando J2ME…
:S

jzaires

Puxa, não tinha visto que era J2ME, nunca programei algo muito específico nele.
Como é em J2ME, tem um artigo na Revista Mundo Java nº 30, essa mais voltada para Java Me.

Um dos artigos se chama “Usando ponto-flutuante em J2ME”.

No código o valor é formatado assim, ficando com duas casa decimais:

//valor é um TextField
totald = Float.parseFloat(valor.getString());
//Fórmula demonstrada na revista
total2c = (double)(int)((totald+0.005)*100.0)/100.0;
//E para exibílo assim em um StringItem chamado total1
tota1.setText(Double.toString(total2c));

Vê se resolve.
Espero ter ajudado.

Schoker

putss…nao funcionou…
testei com o numero 4800.0…
ele saiu a mesma coisa… :S

mas vlw pela ajuda!! =D

jzaires

Vou procurar a respeito, se achar te informo.

Schoker

ok…
vlws!!!

:smiley:

Schoker

Ninguem mais?! :S

Schoker

Consegui resolver da seguinte forma:

String val1;

val1 = new Formatter().formatCurrency(Double.parseDouble(itens.getValor()) * Double.parseDouble(itens.getQtde()));
val1 = val1.replace(',', ';').replace('.', ',').replace(';', '.').substring(1, val1.length());

Tive que fazer esse replace pq se nao ele iria imprimir o resultado assim:
Ex:

Sem formatar: $ 2555.60
Com formatação (mas sem o replace): $ 2,555.60
Com formatação e replace: $ 2.555,60

Eh pq o lacale dele eh dos eua…nao descobri como dar um setLocale…entao resolvi com esse replace…

ahh…e o substring no final serve apenas pra tirar o $

=D

Schoker
Consegui resolver da seguinte forma:
String val1;  

val1 = new Formatter().formatCurrency(Double.parseDouble(itens.getValor()) * Double.parseDouble(itens.getQtde()));  
val1 = val1.replace(',', ';').replace('.', ',').replace(';', '.').substring(1, val1.length());  

String val1; val1 = new Formatter().formatCurrency(Double.parseDouble(itens.getValor()) * Double.parseDouble(itens.getQtde())); val1 = val1.replace(',', ';').replace('.', ',').replace(';', '.').substring(1, val1.length());
Tive que fazer esse replace pq se nao ele iria imprimir o resultado assim: Ex:

Sem formatar: $ 2555.60
Com formatação (mas sem o replace): $ 2,555.60
Com formatação e replace: $ 2.555,60

Eh pq o lacale dele eh dos eua...nao descobri como dar um setLocale...entao resolvi com esse replace...

ahh...e o substring no final serve apenas pra tirar o $

=D

ehhh....nao deu certo rsrs...

dessa forma que eu coloquei ele só funciona pelo netbeans...
ai eu tentei colocar assim no pda e nao funcionou...ele da erro quando chega no "new Formatter..."

o PDA que estou usando é o HTC Touch Diamond...

Pode ser que em outros PDA's funcione...mas nesse nao deu certo...

tem alguma outra maneira de formatar a moeda?

Vlww!

V
Vou tentar te dar uma solução... mas sem testar.
public String retValorPonto (double valor) {
String valorPonto = "";

valor = valor * 100;
String temp = (int) valor;
for (int i = 0; i < vlr.length; i++){
    if (vlr.length == i+3)
        valorPonto+=".";
    valorPonto+=""+vlr.charAt(i);
}
return valorPonto;
}

rode lá pra ver se funciona. Não fiz tratamento para o caso de valores que sejam menores que R$1,00

abraços.

Criado 25 de agosto de 2010
Ultima resposta 1 de set. de 2010
Respostas 10
Participantes 3