Como fazer um Integer.parseInt () para um número decimal?

O código Java é o seguinte:

String s = "0.01"; int i = Integer.parseInt(s); 

No entanto, isso está jogando um NumberFormatException … O que poderia estar dando errado?

0.01 não é um número inteiro (número inteiro), então você não pode analisá-lo como um. Use Double.parseDouble ou Float.parseFloat .

 String s = "0.01"; double d = Double.parseDouble(s); int i = (int) d; 

A razão para a exceção é que um inteiro não contém números racionais (= basicamente frações). Então, tentar analisar 0.3 para um int é um absurdo. Um tipo de dados double ou float pode conter números racionais.

A forma como o Java lança um double em um int é feita removendo-se a parte após o separador decimal, arredondando-se para zero .

 int i = (int) 0.9999; 

i vou por zero.

Usar,

 String s="0.01"; int i= new Double(s).intValue(); 
 String s="0.01"; int i = Double.valueOf(s).intValue(); 

Esse tipo de conversão é, na verdade, surpreendentemente não intuitivo em Java

Tomemos por exemplo uma seqüência de caracteres a seguir: “100,00”

C: uma function de biblioteca padrão simples, pelo menos, desde 1971 (De onde veio o nome `atoi`? )

 int i = atoi(decimalstring); 

Java: passagem obrigatória por análise dupla (ou flutuação), seguida por um casting

 int i = (int)Double.parseDouble(decimalstring); 

Java com certeza tem algumas esquisitices é manga

Usando BigDecimal para obter arredondamento:

 String s1="0.01"; int i1 = new BigDecimal(s1).setScale(0, RoundingMode.HALF_UP).intValueExact(); String s2="0.5"; int i2 = new BigDecimal(s2).setScale(0, RoundingMode.HALF_UP).intValueExact(); 

Suponha que nós tomemos um inteiro em string.

String s = “100”; int i = Integer.parseInt (s); ou int i = Integer.valueOf (s);

mas na sua pergunta o número que você está tentando fazer é o número inteiro

String s = “10,00”;

double d = Double.parseDouble (s);

int i = (int) d;

Dessa forma, você obtém a resposta do valor que está tentando obtê-lo.

use este aqui

int number = (int) Double.parseDouble(s);

Use Double.parseDouble(String a) que você está procurando não é um inteiro, pois não é um número inteiro.