De string formatada pra inteiro

7 respostas
H

Pessoal,

Eu tenho que transformar uma string que contem um valor em notação cientifica ,ou eventualmente não nesse formato, e queria saber como posso fazer um metodo que passe-a pra uma variavel inteira.

Eu pensei nisso:

valor="9.96400e+02"; int var=Integer.parseInt(valor);

Só que dispara uma exceção de Formato Numeiro (NumberFormatException),como posso fazer um metodo geral pra esse caso pois haverá situações em que o valor estará em notação ja usual também…ou seja,nunca vou saber qual será o formato do conteudo de valor ,e de qualuqer jeito vou ter que guarda-lo…

Agradeço a ajuda

7 Respostas

W

Guarde ele como string mesmo, porque não será possível transformar em integer esse (valor=“9.96400e+02”;).

J

Tente usar java.text.DecimalFormat, acho q seria algo parecido com isso:

String pattern = "0.00E0";
DecimalFormat format = new DecimalFormat(pattern);

//string para double
String valor1 = "6.57E-4";
double valorDouble = format.parse(valor1);

//double para string
double valor2 =  3.0/4567.0;
String valorString = format.format(valor2);
H

Nao cara,vou ter sim que pegar esse valor e guardar ou num double ou num int,pois o meu programa adianta manipulara algebricamente esses valores… :wink:

\Por favor pessoal,ninguem tem ai uma sugestão que funcione?

S

Nao cara,vou ter sim que pegar esse valor e guardar ou num double ou num int,pois o meu programa adianta manipulara algebricamente esses valores… :wink:

\Por favor pessoal,ninguem tem ai uma sugestão que funcione?

1- Pega o número depois do “+”.
2- Descarta do “e” em diante.
3- Converte pra double/float. Multiplica por 10^(número depois do “+”).

1- Pega-se o “02” e converte pra inteiro. Fica com 2.
2- Fica com “9.96400”. Faz Float.parseFloat().
3- Multiplica o que obteve do passo 2 por 10^2.

S

Bom, aí talvez você possa converter direto com Float.parseFloat e capturar a NumberFormatException, daí fazer o que eu sugeri acima.

H

Nao cara,vou ter sim que pegar esse valor e guardar ou num double ou num int,pois o meu programa adianta manipulara algebricamente esses valores… :wink:

\Por favor pessoal,ninguem tem ai uma sugestão que funcione?

1- Pega o número depois do “+”.
2- Descarta do “e” em diante.
3- Converte pra double/float. Multiplica por 10^(número depois do “+”).

1- Pega-se o “02” e converte pra inteiro. Fica com 2.
2- Fica com “9.96400”. Faz Float.parseFloat().
3- Multiplica o que obteve do passo 2 por 10^2.

Vou tentar tua solução …só tem um detalhe nela que tem que ser observado,tu ta simplesmente descartando o “+” do numero e esse sinal tem sim muita importancia…

S

Verdade.
Tem que transformar em inteiro do sinal em diante.

Criado 21 de julho de 2005
Ultima resposta 21 de jul. de 2005
Respostas 7
Participantes 4