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…
Guarde ele como string mesmo, porque não será possível transformar em integer esse (valor=“9.96400e+02”;).
J
jaireltonPJ
Tente usar java.text.DecimalFormat, acho q seria algo parecido com isso:
Stringpattern="0.00E0";DecimalFormatformat=newDecimalFormat(pattern);//string para doubleStringvalor1="6.57E-4";doublevalorDouble=format.parse(valor1);//double para stringdoublevalor2=3.0/4567.0;StringvalorString=format.format(valor2);
H
HumbertoJrPJ
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…
\Por favor pessoal,ninguem tem ai uma sugestão que funcione?
S
SchuenemannPJ
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…
\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
SchuenemannPJ
Bom, aí talvez você possa converter direto com Float.parseFloat e capturar a NumberFormatException, daí fazer o que eu sugeri acima.
H
HumbertoJrPJ
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…
\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
SchuenemannPJ
Verdade.
Tem que transformar em inteiro do sinal em diante.