sirve que parsestring para java parsing integer

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



integer.parseint para que sirve (9)

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?


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.


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.


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


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


Utilizar,

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


usa este

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


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.


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