Problemas com NumberFormat e DecimalFormat

4 respostas
K

Pessoal estou tendo problemas com uma rotina feita para transformar um valor real (R$) em Double, para poder fazer cálculos.

public Double TransformarRealEmDouble(String valor){
        NumberFormat instance = DecimalFormat.getInstance(new Locale("pt", "BR"));  
        instance.setMaximumFractionDigits(2);
        Double auxvalor;
        try {
            auxvalor = (Double) instance.parse(valor);
            return auxvalor;
        } catch (ParseException ex) {
            Logger.getLogger(JModulo.class.getName()).log(Level.SEVERE, null, ex);
            return 0.0;
        }
    }

Essa é a rotina, ela transformaria basicamente assim:
Uma string “5,5” em um Double “5.5”

Ela funciona perfeitamente com 5,5 / 5,1 / 5,05… mais sempre que tento botar 5,0 ou somente um 5 que já demonstraria direto como se fosse 5 reais ela da erro.

Estou fazendo este teste:

String a = "5,0";
Double b = jm.TransformarRealEmDouble(a);
System.out.println(b);

E o erro e este:

Exception in thread "main" java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Double
	at sip.JModulo.TransformarRealEmDouble(JModulo.java:84)
	at sip.Teste.main(Teste.java:24)
Java Result: 1

Não sei oque pode ser… alguém me ajuda?

4 Respostas

E

Que mania, a de usar cast para tudo!!!

Já falei aqui, e tenho de repetir 100 vezes:

  1. cast não faz conversão em Java (exceto no caso de tipos primitivos). E Double não é um tipo primitivo.
  2. cast não faz conversão em Java (exceto no caso de tipos primitivos).
  3. cast não faz conversão em Java (exceto no caso de tipos primitivos).
  4. cast não faz conversão em Java (exceto no caso de tipos primitivos).
  5. cast não faz conversão em Java (exceto no caso de tipos primitivos).

No seu caso, use:

double auxvalor; // note que é double, não java.lang.Double
...
auxvalor = instance.parse(valor).doubleValue();
RiQuInHo_

agora eu ri !!

se ele procura um pouco aqui ia chamar muitas coisas referente.

F

entanglement:
Que mania, a de usar cast para tudo!!!

Já falei aqui, e tenho de repetir 100 vezes:

  1. cast não faz conversão em Java (exceto no caso de tipos primitivos). E Double não é um tipo primitivo.
  2. cast não faz conversão em Java (exceto no caso de tipos primitivos).
  3. cast não faz conversão em Java (exceto no caso de tipos primitivos).
  4. cast não faz conversão em Java (exceto no caso de tipos primitivos).
  5. cast não faz conversão em Java (exceto no caso de tipos primitivos).

No seu caso, use:

double auxvalor; // note que é double, não java.lang.Double
...
auxvalor = instance.parse(valor).doubleValue();

qual a liçao disso? antes de postar no forum leia os 5 mil posts desse senhor educado para não cometer tamanha gafe novamente.

K

entanglement:
Que mania, a de usar cast para tudo!!!

Já falei aqui, e tenho de repetir 100 vezes:

  1. cast não faz conversão em Java (exceto no caso de tipos primitivos). E Double não é um tipo primitivo.
  2. cast não faz conversão em Java (exceto no caso de tipos primitivos).
  3. cast não faz conversão em Java (exceto no caso de tipos primitivos).
  4. cast não faz conversão em Java (exceto no caso de tipos primitivos).
  5. cast não faz conversão em Java (exceto no caso de tipos primitivos).

No seu caso, use:

double auxvalor; // note que é double, não java.lang.Double
...
auxvalor = instance.parse(valor).doubleValue();

kk ta feia a coisa suahsuhsuasa, mais resolveu meu caso. Obrigado.

Criado 23 de março de 2012
Ultima resposta 23 de mar. de 2012
Respostas 4
Participantes 4