2012-09-24 24 views
7

Mi programa recibe alguna entrada (a String). Es bastante posible que la entrada tenga la forma de double, como "1.5". Pero me gustaría convertirlo a integer, así que puedo terminar con solo 1.¿Cómo puedo usar parseInt para un doble?

En primer lugar, he intentado esto:

Integer.parseInt(someString); 

Pero no funciona - Estoy asumiendo que es debido a que el punto . que no puede analizarlo.

Así que pensé que tal vez la clase Integer puede crear un integer desde un double. Así que decidí crear un double y luego convertirlo en un int, así:

Integer.parseInt(Double.parseDouble(someString)); 

Pero al parecer hay

ningún método adecuado encontrado para parseInt (doble)

por lo , ¿que sugieres? ¿Hay soluciones únicas para esto? Pensé en hacer un método que elimine el punto y todos los personajes después ... pero eso no suena muy bien.

Respuesta

7

Es seguro analizar cualquier número como double, luego convertirlo a otro tipo después. De esta manera:

// someString = "1.5"; 
double val = Double.parseDouble(someString); // -> val = 1.5; 
int intVal = (int) Math.floor(val);   // -> intVal = 1; 

Tenga en cuenta que con Java 7 (no probado con principios de JVM, pero creo que debería funcionar también), esto también produce el mismo resultado que el anterior:

int intVal = (int) Double.parseDouble(someString); 

como la conversión desde un valor flotante a un int se eliminará cualquier decimal sin redondeo.

+0

... casting! Totalmente olvidado Gracias. – Voldemort

1

intento,

int no= new Double(string).intValue(); 
2

Tienes el Double, supongo, con Double.parseDouble. Tan solo use:

int i = (int) Double.parseDouble(someString); 
+1

... excepto, 'Double.parseDouble (str)' devuelve un 'double', y por lo tanto no puede invocar' intValue() 'en una primitiva. –

+0

Ah, excelente punto. Gracias por la edición! También puede usar el método 'new Double (String)'. – craigmj

4

use casting.

double val = Double.parseDouble(someString); 
int intVal = (int) Math.floor(val); 
1

Prueba esto:

1) analizar la cadena como el doble 2) fundición de doble a int

public static void main(String[] args) { 
    String str = "123.32"; 
    int i = (int) Math.floor(Double.parseDouble(str)); 
    System.out.println(i); 

} 
Cuestiones relacionadas