Conversione di Java String in Double

1. Panoramica

In questo tutorial, tratteremo molti modi per convertire una stringa in un double in Java.

2. Double.parseDouble

Possiamo convertire una stringa in un double usando Double. parseDouble metodo:

assertEquals(1.23, Double.parseDouble("1.23"), 0.000001);

3. Double.valueOf

Allo stesso modo, possiamo convertire una stringa in un Double boxed utilizzando il metodo Double.valueOf :

assertEquals(1.23, Double.valueOf("1.23"), 0.000001);

Notare che il valore restituito di Double.valueOf è un Double boxed . A partire da Java 5, questo Double boxed viene convertito dal compilatore in un double primitivo dove necessario.

In generale, dovremmo preferire Double.parseDouble poiché non richiede al compilatore di eseguire l'auto-unboxing.

4. DecimalFormat.parse

Quando una stringa che rappresenta un double ha un formato più complesso, possiamo usare un DecimalFormat .

Ad esempio, possiamo convertire un valore di valuta basato su decimali senza rimuovere i simboli non numerici:

DecimalFormat format = new DecimalFormat("\u00A4#,##0.00"); format.setParseBigDecimal(true); BigDecimal decimal = (BigDecimal) format.parse("-$1,000.57"); assertEquals(-1000.57, decimal.doubleValue(), 0.000001);

Simile a Double.valueOf , il metodo DecimalFormat.parse restituisce un numero , che possiamo convertire in un double primitivo utilizzando il metodo doubleValue . Inoltre, utilizziamo il metodo setParseBigDecimal per forzare DecimalFormat.parse a restituire un BigDecimal .

Di solito, DecimalFormat è più avanzato di quanto richiesto, quindi dovremmo preferire Double.parseDouble o Double.valueOf .

Per ulteriori informazioni su DecimalFormat , consultare una guida pratica a DecimalFormat .

5. Conversioni non valide

Java fornisce un'interfaccia uniforme per la gestione di stringhe numeriche non valide .

In particolare, Double.parseDouble , Double.valueOf , e DecimalFormat.parse gettare un NullPointerException quando passiamo nullo.

Allo stesso modo, Double.parseDouble e Double.valueOf gettano un NumberFormatException quando passiamo una stringa non valida che non può essere analizzato per una doppia (come & ).

Infine, DecimalFormat.parse genera una ParseException quando passiamo una stringa non valida .

6. Evitare conversioni deprecate

Prima di Java 9, potevamo creare un Double boxed da una String istanziando un Double :

new Double("1.23");

A partire dalla versione 9, Java ha ufficialmente deprecato questo metodo.

7. Conclusione

In conclusione, Java ci fornisce più metodi per convertire le stringhe in valori doppi .

In generale, si consiglia di utilizzare Double.parseDouble a meno che non sia necessario un Double boxed .

Il codice sorgente di questo articolo, inclusi gli esempi, può essere trovato su GitHub.