Dúvida quanto a formatação de números

5 respostas
L

Eaí galera beleza? To com uma duvidazinha besta, eu to querendo transformar uma String em um double e vice versa. Eu fiz a parte de jogar de número para String numa boa:

DecimalFormat df = new DecimalFormat("#,000.00");
System.out.println("Format =&gt "+df.format(-[telefone removido].74));

Aqui ele mostra certinho:
Format =&gt -15.548.798.456,74

O problema é quenão to conseguindo fazer a volta. =/ Alguém pode dar uma ajuda aí?
PS:
Eu já tentei usar o df.parse( “123.456,78” ); mas ele não faz o parse do número todo =/

Valeu!

5 Respostas

matheuscechito

não sei se eu entendi a sua dúvida…

o q eu entendi foi isso: vc quer passar uma string e exibir no formato q vc passou.

acho q ficaria assim:

df.format(Double.parseDouble("123.456,78"))

tenta ae…
t+

von.juliano

Vc quer o valor em número não é isso? Ficaria assim:

double valor = Double.parseDouble("123456.78");
Repare que eu coloquei o ponto como separador decimal.

L

É quase isso que você fizeram, mas o que acontece é isso:
Eu tenho um valor em String de um montante em dinheiro,
por exemplo: R$ 123.456.789,10

Ou seja, tenho a String “123.456.789,10” e quero transformar isso para um double.

E a outra parte é pegar esse double e fazer o inverso(que eu já consegui como mostrado) pego o double e uso o Decimalformat e tudo funciona. Só essa parte de transformar de String para double que não funciona.Para fazer isso eu teria que de algum jeito transformar: “123.456.789,10” EM “12345678.10”. Coisa que também não consigo =)

matheuscechito , essa forma de fazer o parse sua não funciona. Só como o von.juliano mostrou, mas não é isso que eu quero =\

Ninguém mais tem idéias?

Romeo

Ja tentei fazer o q vc quer e não dá por métodos ja feitos, tem q ser no braço mesmo…

SubString e charAt…

T

a) O pessoal lhe passou a string errada - é #,##0.00
b) Você precisa dizer que a linguagem padrão é português (pt-BR)
c) parse retorna um java.lang.Number. Para converter para double você precisa pegar doubleValue (a menos que você use Java 5.0, onde isso é automático pelo "autoboxing").

O código abaixo foi testado com Java 1.4, mas funciona até com o Java da Microsoft (1.1).

import java.text.*;
import java.util.*;

class TesteDF {
     public static void main(String[] args) {
        // Isto é o correto
        Locale.setDefault (new Locale ("pt", "BR"));
        DecimalFormat df = new DecimalFormat("#,##0.00"); 
        // Imprime: Format =&gt -15.548.798.456,74
        System.out.println("Format =&gt "+df.format(-[telefone removido].74));
        double d = 0;
        try {
            d = df.parse ("123.456,78").doubleValue();
        } catch (ParseException ex) {
            ex.printStackTrace();
        }
        // Imprime: 123456.78
        System.out.println (d);
        // Imprime: 123.456,78
        System.out.println (df.format (d));
    }
}
Criado 19 de março de 2007
Ultima resposta 21 de mar. de 2007
Respostas 5
Participantes 5