quinta-feira, setembro 12, 2013

Erro java.lang.NumberFormatException: NaN no Android

HI,

O problema aconteceu nessa função para arredondar as casas decimais de um número que utilizo no android

public static double round(double d, int decimalPlace){ 
  // see the Javadoc about why we use a String in the constructor
  // http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html#BigDecimal(double)
  BigDecimal bd = new BigDecimal(Double.toString(d));
  bd = bd.setScale(decimalPlace,BigDecimal.ROUND_HALF_UP);
  return bd.doubleValue();
}

Fui utilizar e a aplicação deu esse erro java.lang.NumberFormatException: NaN

Pesquisando, descobrir que era por que na primeira utilização da rotina o resultado era zero. É uma rotina para calcular a distância em metros de duas coordenadas. E eu só vou gravar se for maior que dez.

Resolvi testando se antes o valor era zerado

  double aux_metros = 0;
   
  if ((6366000*tt) > 0){
    aux_metros = round(6366000*tt, 2);
  }


Achei aqui a causa do problema

Exception in thread “main” java.lang.NumberFormatException: Infinite or NaN
http://stackoverflow.com/questions/14371003/exception-in-thread-main-java-lang-numberformatexception-infinite-or-nan/14371028#14371028



Fiquem na Paz!!!

Nenhum comentário: