Konvertere Java-streng til dobbelt

1. Oversikt

I denne opplæringen vil vi dekke mange måter å konvertere en String inn i en dobbelt i Java.

2. Double.parseDouble

Vi kan konvertere en String til en dobbelt bruker Dobbelt.parseDouble metode:

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

3. Double.valueOf

På samme måte kan vi konvertere en String inn i en boks Dobbelt bruker Double.valueOf metode:

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

Merk at den returnerte verdien av Double.valueOf er en boks Dobbelt. Siden Java 5, dette bokset Dobbelt konverteres av kompilatoren til en primitiv dobbelt der det trengs.

Generelt, vi burde favorisere Double.parseDouble siden det ikke krever at kompilatoren utfører automatisk unboxing.

4. DesimalFormat.parse

Når en String som representerer en dobbelt har et mer komplekst format, kan vi bruke en Desimalformat.

For eksempel kan vi konvertere en desimalbasert valutaverdi uten å fjerne ikke-numeriske symboler:

DecimalFormat format = new DecimalFormat ("\ u00A4 #, ## 0.00"); format.setParseBigDecimal (true); BigDecimal desimal = (BigDecimal) format.parse ("- $ 1.000,57"); assertEquals (-1000,57, desimal.doubleValue (), 0,000001);

I likhet med Double.valueOf, den DesimalFormat.parse metoden returnerer a Nummer, som vi kan konvertere til en primitiv dobbelt bruker dobbel verdi metode. I tillegg bruker vi setParseBigDecimal metode for å tvinge DesimalFormat.parse å returnere a BigDecimal.

Vanligvis er det Desimalformat er mer avansert enn vi krever, og derfor bør vi favorisere Double.parseDouble eller Double.valueOf i stedet.

For å lære mer om Desimalformat, sjekk en praktisk guide til Desimalformat.

5. Ugyldige konverteringer

Java gir et enhetlig grensesnitt for håndtering av ugyldig numerisk Strings.

Spesielt Double.parseDouble, Double.valueOf, og DesimalFormat.parse kaste a NullPointerException når vi passerer null.

Like måte, Double.parseDouble og Double.valueOf kaste a NumberFormatException når vi passerer en ugyldig streng som ikke kan parses til en dobbelt (som for eksempel &).

Til slutt, DesimalFormat.parse kaster en ParseException når vi passerer en ugyldig String.

6. Unngå utrangerte konverteringer

Før Java 9 kunne vi lage en boks Dobbelt fra en String ved å starte en Dobbelt:

ny Double ("1.23");

Fra og med versjon 9 avviklet Java denne metoden offisielt.

7. Konklusjon

Avslutningsvis gir Java oss flere metoder for å konvertere Strings inn i dobbelt verdier.

Generelt anbefaler vi å bruke Double.parseDouble med mindre en boks Dobbelt trengs.

Kildekoden for denne artikkelen, inkludert eksempler, finner du på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found