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

Konverter streng til dobbelt i Java

Det er almindeligt anvendt ved håndtering af matematiske operationer på en dobbelt talstreng. De indtastede data modtages som en streng, hver gang vi henter data fra et tekstfelt eller tekstområde. Vi skal konvertere strengen til dobbelt, hvis inputdataene er dobbelte.

Målet er at transformere en streng til en dobbelt i Java.

Denne tutorial skal gennemgå, hvordan man konverterer en streng til en dobbelt i Java. Du kan konvertere en streng til dobbelt på tre forskellige metoder.

  • Brug af Double.parseDouble(String)-metoden
  • Konverter streng til dobbelt i Java ved hjælp af Double.valueOf(String)
  • Java Konverter streng til dobbelt ved hjælp af konstruktøren af ​​Double-klassen – Konstruktøren Double(String) er forældet siden Java version 9
  • DecimalFormat parse()

Konverter streng til dobbelt i Java eeksempler

Input: String = "1532.75"
Output: 1532.75
  
Input: String = "41560.49"
Output: 41560.49

For at fuldføre målet kan vi bruge en række forskellige tilgange:

Brug af Double.parseDouble()

Metoden Double.parseDouble() bruges til at gøre dette. Derudover er den statiske funktion af Double-klassen parseDouble(). Denne funktion returnerer den dobbelte ækvivalent af det leverede strengargument. Hvis den angivne streng str er null, vil denne metode kaste NullPointerException, og hvis strengformatet er ugyldigt, vil den kaste NumberFormatException. For eksempel, hvis den givne streng er "6042.80ab", vil denne metode afgive en NumberFormatException.

Følgende er signaturen for parseDouble()-metoden:

Syntaksen er som følger:

double str1 = Double.parseDouble(str);

eller

public static double parseDouble(str) throws NumberFormatException

Denne procedure giver en undtagelse. Når strengen ikke inkluderer en parserbar double, kastes en NumberFormatException.

Lad os se på en simpel java-kode til at konvertere en streng til en dobbelt.

double d=Double.parseDouble("9805.65");

Eksempel 1:Brug af Double.parseDouble()

public class StringToDoubleExample{  
  public static void main(String args[]){  
  String s="23.6";  
  double d=Double.parseDouble("23.6");  
  System.out.println(d);  
  }
}  

Eksempel 2:Brug af Double.parseDouble()

// program for converting a String to Double in Java
// using parseDouble()

public class Codeunderscored {

	// main method
	public static void main(String args[])
	{

		// create a String
		String strVar = "2030.50194";

		// convert into Double
		double strOneVar = Double.parseDouble(strVar);

		// print String as Double
		System.out.println(strOneVar);
	}
}

Eksempel 3:Program til at konvertere en streng til dobbelt ved hjælp af parseDouble(String)

public class JavaParseDouble{
   public static void main(String args[]){

	String strVal = "5021.1850";

	/* Convert String to double using
	 * parseDouble(String) method of Double
	 * wrapper class
	 */
	double dNumber = Double.parseDouble(strVal);
		
	//displaying the value of variable  dNumber
	System.out.println(dNumber);
   }
}

Overvej følgende scenarie:Vi ønsker at beregne prisen efter at have modtaget en rabat på varens startpris. Indtastningsparametrene er sådan, at varens oprindelige pris og rabat kommer fra dit faktureringssystem som tekst. Vi ønsker at udføre en aritmetisk operation på disse tal for at bestemme den nye pris efter at have trukket rabatten fra den oprindelige pris.

I følgende eksempelkode lærer vi, hvordan du bruger Double.parseDouble()-metoden til at konvertere en strengværdi til en dobbelt:

package com.codeunderscored;
 
/**
 * This class is a demonstration of sample code for converting the String to a double in the java program
 * using Double.parseDouble() method
 *
 * @codeunderscored
 *
 */
 
public class StringToDoubleCalculateDiscount {
     
    public static void main(String[] args) {
         
    // Assign "2250.00" to String variable originalPriceStr
    String originalPriceStrVar = "150.00D";
    // Assigning "50" to String variable originalPriceStrVar
    String discountStrVar = "+50.0005d";
         
    System.out.println("originalPriceStrVar :"+originalPriceStrVar);
    System.out.println("discountStrVar :"+discountStrVar);
         
      // Pass originalPriceStrVar i.e. String "50.00D" as a parameter to parseDouble()
    // to convert string 'originalPriceStrVar' value to double
    // and assign it to double variable originalPriceVar

    double originalPriceVal = Double.parseDouble(originalPriceStr);

    // Pass discountStrVar i.e. String "50.005d" as a parameter to parseDouble()
    // to convert string 'discountStrVar' value to double
    // and assign it to double variable discount
       
    double discountVal = Double.parseDouble(discountStrVar);
         
    System.out.println("Welcome, the item original price is : $"+originalPriceVal+"");
    System.out.println("We are offering the following discount :"+discountVal+"%");
         
    //Calculate new price after discount
    double newPriceVal =   originalPriceVal - ((originalPriceVal*discountVal)/100);
             
    //Printing of the new price after getting the discount on the console
     System.out.println("Enjoy new attractive price after discount: $"+newPriceVal+"");
                 
   }    
}

Brug af Double.valueOf()

valueOf()-metoden for Double wrapper-klassen i Java fungerer på samme måde som parseDouble()-metoden i det forrige Java-eksempel.

Syntaksen er som følger:

double str1 = Double.valueOf(str);
String strVar = "5021.1850";

double dNumber = Double.valueOf(strVar);

Efter konvertering vil værdien af ​​dNumber være 5021.1850.

Lad os se på et komplet konverteringseksempel, der bruger Double.valueOf(String)-funktionen.

Eksempel 1:Program til at konvertere en streng til dobbelt ved hjælp af valueOf(String)

// Program for Converting  a String to Double in Java
// using parseDouble()

public class Codeunderscored {

	// main method
	public static void main(String args[])
	{

		// create a String
		String strVar = "5021.1850";

		// convert into Double
		double strOneVar = Double.valueOf(strVar);

		// print String as Double
		System.out.println(strOneVar);
	}
}

Eksempel 2:Program til at konvertere en streng til dobbelt ved hjælp af valueOf(String)

public class JavaValueOf{
   public static void main(String args[]){
	String strVar = "5021.1850";

	/* Convert String to double using
	 * valueOf(String) method of Double
	 * wrapper class
	 */
	double dNumber = Double.valueOf(strVar);
		
	//displaying the value of variable  dNumber
	System.out.println(dNumber);
   }
}

Eksempel 3:Program til at konvertere en streng til dobbelt ved hjælp af valueOf(String)

package com.codeunderscored;
 
/**
 * This class has sample code responsible for converting the String to double in Java
 * using Double.valueOf() method
 *
 * @author
 *
 */
 
public class StringToDoubleValueOf
     
    public static void main(String[] args) {
         
        // Assign "1000.0000d" to String variable depositAmountStr
        String depositAmountStrVal = "1000.0000d";
        // Assign "5.00D" to String variable interestRate
        String interestRateStrVal = "+5.00D";
        // Assign "2" to String variable yearsStrVal
        String yearsStrVal = "2";
         
        System.out.println("The deposit amount string value :"+depositAmountStrVal);
        System.out.println("The interest rate string :"+interestRateStrVal);
        System.out.println("Number of years string value :"+yearsStrVal);
         
      // Pass depositAmountStrVal i.e.String "1000.0000d" as a parameter to valueOf()
        // to convert string 'depositAmountStrVal' value to double
        // and assign it to double variable depositAmount

        Double depositAmountVal = Double.valueOf(depositAmountStrVal);

    // Pass interestRateStrVal i.e.String "5.00D" as a parameter to valueOf()
        // to convert string 'interestRateStrVal' value to double
        // and assign it to double variable discount        
        Double interestRateVal = Double.valueOf(interestRateStrVal);

        // Pass yearsStrVal i.e.String "2" as a parameter to valueOf()

        // to convert string 'yearsStrVal' value to double
        // and assign it to double variable discount        
        Double yearsVal = Double.valueOf(yearsStrVal);    
         
        System.out.println("Welcome to Code Sacco. Thanks for depositing : $"+
        depositAmountVal+" with our bank");
        System.out.println("Our bank is offering attractive interest rate for       1 year :"+interestRateVal+"%");
     
        // interest calculation  after two years on the deposit amount
        Double interestEarnedVal = ((depositAmountVal*interestRateVal*yearsVal)/100);   
 
        System.out.println("You will be receiving total interest after "+yearsVal+" is $"+interestEarnedVal+"");      
             
    }   
}

Bruger konstruktør af dobbelt klasse

Siden Java version 9 er konstruktøren Double(String) blevet forældet. Konstruktøren af ​​Double-klassen analyserer String-argumentet, som vi sender ind, og producerer en tilsvarende dobbeltværdi.

String strVar = "5021.1850";
double numVar = new Double(strVar);

Syntaksen er som følger.

Double str1 = new Double(str);

eller

public Double(String s) throws NumberFormatException

Vi kan bruge denne konstruktør til at bygge et nyt dobbeltobjekt ved at give den streng, vi vil konvertere.

Eksempel 1:Java-program til at konvertere en streng til dobbelt ved hjælp af konstruktøren af ​​Double class

public class DoubleClassExample{
   public static void main(String args[]){
       String strVal ="5021.1850";
       double numVar = new Double(strVal);
       System.out.println(numVar);
   }
}

Eksempel 2:Java-program til at konvertere en streng til dobbelt ved hjælp af konstruktøren af ​​Double class

// Program for Converting a String to Double in Java
// using parseDouble()

public class Codeunderscored {

	// main method
	public static void main(String args[])
	{

		// create a String
		String strVal = "2030.50194";

		// convert into Double
		Double strOneVar = new Double(strVal);

		// print String as Double
		System.out.println(strOneVar);
	}
}

DecimalFormat parse()

Vi kan bruge et DecimalFormat, når en streng, der udtrykker en dobbelt, har et mere kompliceret format. Du kan bruge den til at konvertere en formateret streng til en dobbeltstreng. For eksempel, hvis streng er "8,11,666.43d", kan vi bruge DecimalFormat til at konvertere denne streng til:

String strVar = "8,11,666.43d";
try {
	double dNumber = DecimalFormat.getNumberInstance().parse(strVar).doubleValue();
	System.out.println(dNumber); //811666.48
} catch (ParseException e) {
	e.printStackTrace();
}

Fordi parse()-metoden producerer en Number-instans, skal vi bruge doubleValue() for at få den dobbelte primitive type. Hvis strengen ikke er formateret korrekt, vil denne funktion afgive en ParseException. Vi kan konvertere en decimal-baseret pengeværdi uden at eliminere ikke-numeriske symboler på følgende måde:

DecimalFormat decimalFormat = new DecimalFormat("\u00A4#,##0.00");
decimalFormat.setParseBigDecimal(true);

BigDecimal decimal = (BigDecimal) decimalFormat.parse("-$9,450.85");

assertEquals(-9450.85, decimal.doubleValue(), 0.000001);

DecimalFormat.parse-metoden, ligesom Double.valueOf, producerer et tal, som vi kan konvertere til en grundlæggende double ved hjælp af doubleValue-metoden. Metoden setParseBigDecimal bruges også til at tvinge DecimalFormat.parse til at returnere en BigDecimal.

DecimalFormatet er normalt mere kompliceret, end vi har brug for. Derfor bør vi bruge Double i stedet. Brug i stedet parseDouble eller Double.valueOf. Denne metode analyserer den tekst, der sendes til den. Det returnerer tallet ved hjælp af en streng fra startpositionen.

Denne procedure giver en undtagelse. Hvis strengens begyndelse ikke er i et parserbart format, kastes en ParseException. Ved at bruge metoden parse() analyserer denne eksempelkode en struktureret tekststreng, der indeholder en dobbelt værdi:

package com.codeunderscored;
 
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.ParseException;
 
/**
 * This class has sample code for the conversion of String to double in Java
 * using DecimalFormat parse () method
 *
 * @author
 *
 */
 
public class StringToDoubleDecimalFormat {
     
// this is the main method 
    public static void main(String [] args) throws ParseException {     
        // Assign "4,380,90.50" to String variable pointsString
        String pointsStringVal = "4,380,90.50";
         
        System.out.println("The points string value is:"+pointsStringVal);
         
        // Pass pointsString i.e. String "+4,380,90.50" as a parameter to
        // DecimalFormat.getNumberInstance().parse() method        
        // to convert string pointsString value to double
        // and assign it to double variable points

        NumberFormat numFormat = DecimalFormat.getNumberInstance();
        Number pointsNumber = numFormat.parse(pointsString);     
        double pointsCount = pointsNumber.doubleValue();
         
        System.out.println("Well Done ! You have earned :"+pointsCount+" points!");    
             
    }   
}

Konverteringer, der ikke er gyldige

For forkerte numeriske strenge giver Java en standardiseret grænseflade. Double.parseDouble, Double.valueOf og DecimalFormat er et par eksempler. Når vi leverer null for at parse, får vi en NullPointerException. På samme måde Double.parseDouble og Double.parseDouble.parseDouble.parseDouble.

Når vi leverer en ugyldig streng, der ikke kan behandles til en dobbelt, kaster valueOf en NumberFormatException (såsom &). Endelig, når vi angiver en ugyldig streng til DecimalFormat.parse, fremkalder den en ParseException.

Konklusion

Der er flere metoder til at konvertere en Java-streng til en dobbelt. I dag har vi set på nogle af de mest almindelige metoder til at konvertere en Java-streng til en dobbelt primitiv datatype eller et dobbeltobjekt. Fordi Java tillader autoboksning, kan du i flæng bruge den dobbelte primitive type og dobbeltobjektet.

Samlet set giver Java os forskellige måder at konvertere strenge til dobbelttal. Generelt råder vi dig til at bruge Double. Brug parseDouble.

, medmindre der kræves en boxed Double
Java tag