Conversion d'une chaîne Java en double

1. Vue d'ensemble

Dans ce didacticiel, nous allons couvrir de nombreuses façons de convertir une chaîne en un double en Java.

2. Double.parseDouble

Nous pouvons convertir une chaîne en double en utilisant le double. méthode parseDouble :

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

3. Double.valueOf

De même, nous pouvons convertir une chaîne en un Double encadré en utilisant la méthode Double.valueOf :

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

Notez que la valeur renvoyée de Double.valueOf est un Double encadré . Depuis Java 5, ce Double encadré est converti par le compilateur en un double primitif si nécessaire.

En général, nous devrions favoriser Double.parseDouble car il ne nécessite pas que le compilateur effectue un déballage automatique.

4. DecimalFormat.parse

Lorsqu'une String représentant un double a un format plus complexe, nous pouvons utiliser un DecimalFormat .

Par exemple, nous pouvons convertir une valeur de devise décimale sans supprimer les symboles non numériques:

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

Semblable à Double.valueOf , la méthode DecimalFormat.parse renvoie un Number , que nous pouvons convertir en un double primitif à l'aide de la méthode doubleValue . En outre, nous utilisons la méthode setParseBigDecimal pour forcer DecimalFormat.parse à renvoyer un BigDecimal .

Habituellement, le DecimalFormat est plus avancé que ce dont nous avons besoin, par conséquent, nous devrions privilégier le Double.parseDouble ou le Double.valueOf à la place.

Pour en savoir plus sur DecimalFormat , veuillez consulter un guide pratique sur DecimalFormat .

5. Conversions non valides

Java fournit une interface uniforme pour gérer les chaînes numériques non valides .

Notamment, Double.parseDouble , Double.valueOf et DecimalFormat.parse lancent une exception NullPointerException lorsque nous transmettons null.

De même, Double.parseDouble et Double.valueOf lancent une NumberFormatException lorsque nous transmettons une chaîne non valide qui ne peut pas être analysée en un double (tel que & ).

Enfin, DecimalFormat.parse lève une ParseException lorsque nous transmettons une chaîne non valide .

6. Éviter les conversions obsolètes

Avant Java 9, nous pouvions créer un Double encadré à partir d'une chaîne en instanciant un Double :

new Double("1.23");

Depuis la version 9, Java a officiellement déconseillé cette méthode.

7. Conclusion

En conclusion, Java nous fournit plusieurs méthodes pour convertir des chaînes en valeurs doubles .

En général, nous vous recommandons d'utiliser Double.parseDouble sauf si un Double encadré est nécessaire.

Le code source de cet article, y compris des exemples, se trouve à l'adresse over sur GitHub.