NumberFormat

3 respostas
F

Ola galera estou estudando para certificacao scjp alguem sabe me explicar se cai muito sobre um metodo da classe NumberFormat? setParseIntegerOnly?(boolean)??
para que serve mesmo??tentei usalo mas nao entendi a lógica

public class Texte2 {
   public static void main(String[] args) {
      float v=2345.67889f;
       String x=null;
     NumberFormat nf=NumberFormat.getNumberInstance();
        try {
              System.out.println("valor" + nf.parse("1243.566"));
               nf.setParseIntegerOnly(false);//se colocar ou nao o resultado nao muda
               System.out.println("valor" + nf.parse("1243.456"));
           
        } catch (ParseException ex) {
            ex.printStackTrace();
        }
      // System.out.println("depis valor" + nf.format(v));
   }
 }

3 Respostas

T

O que o Javadoc diz é que se você setar "setParseIntegerOnly(true)", então ele vai desprezar os dados decimais. Mas nem sabia que isso poderia cair - afinal de contas, a prova de certificação não chega a entrar nessas sutilezas (principalmente se você for fazer a prova do Java 5.0 - a matéria é extensa demais para que eles fiquem pegando no pé dessas coisas que são muito pouco usadas.

F

thingol:
Javadoc:

setParseIntegerOnly : only affects parsing, e.g. if true, "3456.78" -> 3456 (and leaves the parse position just after index 6) if false, "3456.78" -> 3456.78 (and leaves the parse position just after index 8) This is independent of formatting. If you want to not show a decimal point where there might be no digits after the decimal point, use setDecimalSeparatorAlwaysShown.

O que o Javadoc diz é que se você setar "setParseIntegerOnly(true)", então ele vai desprezar os dados decimais. Mas nem sabia que isso poderia cair - afinal de contas, a prova de certificação não chega a entrar nessas sutilezas (principalmente se você for fazer a prova do Java 5.0 - a matéria é extensa demais para que eles fiquem pegando no pé dessas coisas que são muito pouco usadas.

Obrigado thingol!Pois Realmente é muita sutileza e pior que no livro da katy sierra diz que cai,mas voltando ao metodo eu setei com true mas o resultado ficou o mesmo ,ate tirei o metodo e nao interfere em nada no resultado.Será que depende da versao do compilador?

T

O seu problema é que está tentando ler um número usando o Locale brasileiro, e você está passando um número em formato americano. Este programa deve funcionar direitinho:

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

class TesteNumberFormat {
    public static void main(String[] args) throws ParseException {
        Locale.setDefault (Locale.US);
        NumberFormat nf = new DecimalFormat ("#,###.##");
        double d;
        nf.setParseIntegerOnly (true);
        d = nf.parse ("1243.566").doubleValue();
        System.out.println (d);
        nf.setParseIntegerOnly (false);
        d = nf.parse ("1243.566").doubleValue();
        System.out.println (d);
    }
}
Criado 12 de novembro de 2007
Ultima resposta 12 de nov. de 2007
Respostas 3
Participantes 2