¿Cómo hacer un Integer.parseInt () para un número decimal?

El código de Java es el siguiente:

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

Sin embargo, esto arroja una NumberFormatException … ¿Qué podría estar yendo mal?

0.01 no es un número entero (número entero), por lo que, por supuesto, no puede analizarlo como uno solo. Use Double.parseDouble o Float.parseFloat en Float.parseFloat lugar.

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

El motivo de la excepción es que un número entero no contiene números racionales (= básicamente fracciones). Entonces, intentar analizar 0.3 a un int es una tontería. Un tipo de datos double o float puede contener números racionales.

La forma en que Java lanza un double a un int se hace eliminando la parte después del separador decimal redondeando hacia cero .

 int i = (int) 0.9999; 

i haré por cero.

Utilizar,

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

Este tipo de conversión es sorprendentemente poco intuitiva en Java

Tomemos por ejemplo una cadena siguiente: “100.00”

C: una función de biblioteca estándar simple al menos desde 1971 ( ¿De dónde viene el nombre `atoi`? )

 int i = atoi(decimalstring); 

Java: paso obligatorio por análisis doble (o flotante), seguido de un molde

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

Java seguro tiene algunas rarezas en su manga

Usando BigDecimal para redondear:

 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(); 

supongamos que tomamos un entero en cadena.

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

pero en su pregunta, el número que está tratando de hacer el cambio es el número entero

String s = “10.00”;

double d = Double.parseDouble (s);

int i = (int) d;

De esta manera obtienes la respuesta del valor que intentas obtener.

usa este

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

Use Double.parseDouble(String a) lo que está buscando no es un número entero, ya que no es un número entero.