2012-09-24 22 views
7

Il mio programma riceve un input (a String). È piuttosto possibile che l'input sia sotto forma di double, come "1.5". Ma mi piacerebbe convertirlo in un integer, quindi posso finire con solo un 1.Come posso usare parseInt per un doppio?

In primo luogo, ho provato questo:

Integer.parseInt(someString); 

Ma non funziona - Sto assumendo è a causa del punto . che non possa analizzarlo.

Quindi ho pensato che forse la classe Integer può creare un da un double. Così ho deciso di creare un double e poi farne un int, in questo modo:

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

Ma a quanto pare c'è

alcun metodo adatto trovata per parseInt (doppio)

Così , che cosa suggerisci? Ci sono one-liner per questo? Ho pensato di creare un metodo che rimuova il punto e tutti i caratteri dopo di esso ... ma non sembra molto bello.

risposta

7

È possibile analizzare qualsiasi numero come double, quindi convertirlo in un altro tipo dopo. Come questo:

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

Si noti che con Java 7 (non testato con i precedenti JVM, ma penso che dovrebbe funzionare ugualmente), questo sarà anche produrre lo stesso risultato di cui sopra:

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

la conversione da un valore fluttuante a un int scenderà qualsiasi decimale senza arrotondamento.

+0

... Casting! Totalmente dimenticato. Grazie. – Voldemort

1

prova,

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

Hai il Double, suppongo, con Double.parseDouble. Quindi basta usare:

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

... eccetto, 'Double.parseDouble (str)' restituisce un 'double', e quindi non puoi chiamare' intValue() 'su una primitiva. –

+0

Ah, ottimo punto. Grazie per la modifica! Si potrebbe anche usare l'approccio 'new Double (String)'. – craigmj

4

utilizzare casting.

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

Prova questo:

1) analizzare la stringa come doppia 2) cast doppia a int

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

}