java divisione - Come analizzare la stringa numerica contenente le virgole in un numero intero in java?




4 Answers

Questa virgola è un separatore decimale o questi due numeri? Nel primo caso è necessario fornire la classe Locale alla classe NumberFormat che utilizza la virgola come separatore decimale:

NumberFormat.getNumberInstance(Locale.FRANCE).parse("265,858")

Ciò si traduce in 265.858 . Ma usando le 265858 locali statunitensi riceverai 265858 :

NumberFormat.getNumberInstance(java.util.Locale.US).parse("265,858")

Questo perché in Francia trattano la virgola come separatore decimale mentre negli Stati Uniti - come separatore di gruppi (in migliaia).

Se questi sono due numeri - String.split() e analizzano due stringhe separate in modo indipendente.

decimali visualizzare

Otterrò NumberFormatException quando cerco di analizzare 265.858 con Integer.parseInt() .

C'è un modo per analizzarlo in un numero intero?




Se si tratta di un numero e si desidera rimuovere i separatori, NumberFormat restituirà un numero. Assicurati di utilizzare le getNumberInstance internazionali corrette quando utilizzi il metodo getNumberInstance .

Ad esempio, alcune versioni locali scambiano la virgola e il punto decimale con ciò a cui potresti essere abituato.

Quindi usa il metodo intValue per restituire un intero. Dovrai comunque avvolgere tutto in un blocco try / catch, per tenere conto delle Parse Exceptions.

try {
    NumberFormat ukFormat = NumberFormat.getNumberInstance(Locale.UK);
    ukFormat.parse("265,858").intValue();
} catch(ParseException e) {
    //Handle exception
}






Prova questo:

String x = "265,858 ";
    x = x.split(",")[0];
    System.out.println(Integer.parseInt(x));

EDIT: se lo si desidera arrotondato al numero intero più vicino:

    String x = "265,858 ";
    x = x.replaceAll(",",".");
    System.out.println(Math.round(Double.parseDouble(x)));



Related