Java >> Java tutorial >  >> Tag >> String

Konverter streng til flydende og tilbage i Java

1. Introduktion

Konvertering af data fra Float til streng og omvendt er en almindelig operation i Java. Men de mange måder at gøre dette på kan forårsage forvirring og usikkerhed om, hvad du skal vælge.

I denne artikel vil vi fremvise og sammenligne alle de tilgængelige muligheder.

2. Flyd til streng

Lad os først se på de mest almindelige måder at konvertere Float på værdier til streng .

2.1. streng Sammenkædning

Den mest ligetil løsning, vi kan bruge, er at sammenkæde den flydende kommaværdi med en tom streng .

Lad os se på et eksempel:

float givenFloat = 1.25f;

String result = givenFloat + "";

assertEquals("1.25", result);

På samme måde kan vi tilføje en Float objekt til den tomme streng og få samme resultat. Når vi bruger en Float objekt, dets toString() metode kaldes automatisk:

Float givenFloat = 1.25f;

String result = givenFloat + "";

assertEquals("1.25", result);

Hvis Float objektet er null, vil sammenkædningsresultatet være et "nul" String :

Float givenFloat = null;

String result = givenFloat + "";

assertEquals("null", result);

2.2. Float.toString()

En anden mulighed, vi kan bruge, er den statiske toString() metoden til Float klasse for String konvertering. Vi kan passere enten en float primitiv værdi eller en Float objekt til toString() metode:

Float givenFloat = 1.25f;

String result = Float.toString(givenFloat);

assertEquals("1.25", result);

Hvis vi sender null som argument til metoden, får vi en NullPointerException ved kørsel:

Float givenFloat = null;

assertThrows(NullPointerException.class, () -> Float.toString(givenFloat));

2.3. String.valueOf()

På samme måde kan vi bruge String 's statiske valueOf metode:

Float givenFloat = 1.25f;

String result = String.valueOf(givenFloat);

assertEquals("1.25", result);

I modsætning til Float.toString()String.valueOf() vil ikke kaste en undtagelse, hvis vi sender null som et argument, i stedet for "null" strengen er returneret :

Float givenFloat = null;

String result = String.valueOf(givenFloat);

assertEquals("null", result);

2.4. String.format()

streng 's format() statisk metode giver os yderligere formateringsmuligheder. Vi skal være opmærksomme på, at uden at begrænse antallet af decimaler, vil resultatet indeholde efterfølgende nuller, selvom der ikke er nogen brøkdel, som vi kan se i følgende eksempel:

Float givenFloat = 1.25f;

String result = String.format("%f", givenFloat);

assertEquals("1.250000", result);

Når vi formaterer det flydende decimaltal, der angiver antallet af decimaler, format() metode vil også runde resultatet op :

Float givenFloat = 1.256f;

String result = String.format("%.2f", givenFloat);

assertEquals("1.26", result);

Hvis vi sender en null Float , så vil det konverterede resultat være en "nul" streng :

Float givenFloat = null;

String result = String.format("%f", givenFloat);

assertEquals("null", result);

2.5. Decimalformat

Til sidst DecimalFormat klasse har et format() metode, der tillader konvertering af flydende kommaværdier til brugerdefinerede formaterede strenge . Fordelen er, at vi kan definere præcist, hvor mange decimaler vi ønsker i vores resulterende streng .

Lad os se, hvordan du bruger det i et eksempel:

Float givenFloat = 1.25f;

String result = new DecimalFormat("#.0000").format(givenFloat);

assertEquals("1.2500", result);

Hvis efter at vi har anvendt formateringen, er der ingen brøkdel, DecimalFormat vil returnere hele tallet :

Float givenFloat = 1.0025f;

String result = new DecimalFormat("#.##").format(givenFloat);

assertEquals("1", result);

Hvis vi sender null som et argument, får vi en IllegalArgumentException :

Float givenFloat = null;

assertThrows(IllegalArgumentException.class, () -> new DecimalFormat("#.000").format(givenFloat));

3. streng til Flyd

Lad os derefter se på de mest almindelige måder at konvertere String på værdier til Float .

3.1. Float.parseFloat()

En af de mest almindelige måder er at bruge Float 's statiske metode:parseFloat() . Det vil returnere en primitiv float værdi, repræsenteret ved strengen argument . Derudover ignoreres førende og efterfølgende mellemrum:

String givenString = "1.25";

float result = Float.parseFloat(givenString);

assertEquals(1.25f, result);

Vi får en NullPointerException hvis strengen argumentet er null:

String givenString = null;

assertThrows(NullPointerException.class, () -> Float.parseFloat(givenString));

Hvis strengen argumentet indeholder ikke en parserbar float , får vi en NumberFormatException:

String givenString = "1.23x";

assertThrows(NumberFormatException.class, () -> Float.parseFloat(givenString));

3.2. Float.valueOf()

På samme måde kan vi bruge Float 's statiske valueOf() metode. Forskellen er, at valueOf() returnerer en Float objekt . Specifikt kalder den parseFloat() metode og bokser den ind i en Float objekt:

String givenString = "1.25";

Float result = Float.valueOf(givenString);

assertEquals(1.25f, result);

På samme måde, hvis vi sender en ikke-parserbar streng , får vi en NumberFormatException :

String givenString = "1.25x";

assertThrows(NumberFormatException.class, () -> Float.valueOf(givenString));

3.3. Decimalformat

Vi kan bruge DecimalFormat til konvertering af String til Flyd såvel. En af de største fordele er at angive brugerdefinerede decimaltegnseparatorer .

String givenString = "1,250";
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setDecimalSeparator(',');
DecimalFormat decimalFormat = new DecimalFormat("#.000");
decimalFormat.setDecimalFormatSymbols(symbols);

Float result = decimalFormat.parse(givenString).floatValue();

assertEquals(1.25f, result);

3.4. Float's Constructor

Til sidst kan vi bruge Float 's konstruktør direkte til konverteringen. Internt vil den bruge Float 's statiske parseFloat() metode og opret Float objekt:

String givenString = "1.25";

Float result = new Float(givenString);

assertEquals(1.25f, result);

Fra Java 9 er denne konstruktør blevet forældet. I stedet bør vi overveje at bruge de andre statiske fabriksmetoder såsom parseFloat() eller valueOf() .

4. Konklusion

I denne artikel har vi undersøgt flere måder at konvertere String på instanser til at flyde eller Flyd instanser og tilbage.

For simple konverteringer, String sammenkædning og Float.toString() ville være de foretrukne muligheder for at transformere til String . Hvis vi har brug for mere kompleks formatering, så DecimalFormat er det bedste værktøj til jobbet. Til konvertering af strenge til flydende kommaværdier kan vi bruge Float.parseFloat() hvis vi har brug for en float primitiv eller Float.valueOf() hvis vi foretrækker en Float objekt. På samme måde, for tilpasset formatering, DecimalFormat er den bedste mulighed.

Som altid er koden til disse eksempler tilgængelig på GitHub.


Java tag