Σε αυτό το σεμινάριο, θα μάθουμε πώς να μετατρέπουμε το αλφαριθμητικό της Java σε τύπο δεδομένων double:

Θα μάθουμε να χρησιμοποιούμε τις ακόλουθες μεθόδους για τη μετατροπή συμβολοσειράς σε διπλή τιμή στη Java:

  • Double.parseDouble(String)
  • Double.valueOf(String)
  • DecimalFormat parse()
  • new Double(String s)

Μέθοδοι για να μετατρέψετε Java String σε double

Υπάρχουν ορισμένα σενάρια όπου στο πρόγραμμα Java πρέπει να εκτελέσουμε κάποιου είδους αριθμητικές πράξεις σε μια αριθμητική τιμή, όπως ο υπολογισμός του λογαριασμού, ο υπολογισμός των τόκων επί του ποσού της κατάθεσης κ.λπ. Τύπος δεδομένων Java String .

Για παράδειγμα, για τον υπολογισμό των λογαριασμών του παντοπωλείου - η τιμή του προϊόντος και ο αριθμός των μονάδων που αγοράστηκαν έρχονται ως είσοδος από το πεδίο κειμένου μιας ιστοσελίδας ή μια περιοχή κειμένου μιας ιστοσελίδας σε μορφή κειμένου, δηλαδή σε τύπο δεδομένων Java String. Σε τέτοια σενάρια, πρέπει πρώτα να μετατρέψουμε αυτό το String για να ανακτήσουμε αριθμούς σε Πρωτεύον τύπος δεδομένων Java double .

Ας δούμε τις διάφορες μεθόδους μία προς μία λεπτομερώς.

#1) Μέθοδος Double.parseDouble()

Η μέθοδος parseDouble() παρέχεται από την κλάση Double. Η κλάση Double καλείται κλάση περιτυλίγματος καθώς περιτυλίγει την τιμή του πρωτόγονου τύπου double σε ένα αντικείμενο.

Ας ρίξουμε μια ματιά στην υπογραφή της μεθόδου παρακάτω:

public static double parseDouble(String str) throws NumberFormatException

Αυτή είναι μια στατική μέθοδος της κλάσης Double η οποία επιστρέφει έναν τύπο δεδομένων double που αναπαρίσταται από το καθορισμένο String.

Εδώ, η 'str' η παράμετρος είναι ένα String που περιέχει την αναπαράσταση της διπλής τιμής που πρέπει να αναλυθεί και επιστρέφει την διπλή τιμή που αναπαρίσταται από το όρισμα.

Αυτή η μέθοδος εκτοξεύει μια Εξαίρεση NumberFormatException όταν το String δεν περιέχει ένα αναλύσιμο double.

Για παράδειγμα, ας εξετάσουμε ένα σενάριο όπου θέλουμε να υπολογίσουμε την τιμή μετά την παραλαβή μιας έκπτωσης επί της αρχικής τιμής των αντικειμένων.

Για το σκοπό αυτό, οι τιμές εισόδου, όπως η αρχική τιμή του προϊόντος και η έκπτωση, προέρχονται από το σύστημα χρέωσης ως κείμενο και θέλουμε να εκτελέσουμε μια αριθμητική πράξη σε αυτές τις τιμές για να υπολογίσουμε τη νέα τιμή μετά την αφαίρεση της έκπτωσης από την αρχική τιμή.

Ας δούμε πώς μπορείτε να χρησιμοποιήσετε τη μέθοδο Double.parseDouble() για να αναλύσετε την τιμή String σε double στο ακόλουθο παράδειγμα κώδικα:

 package com.softwaretestinghelp; /** * Αυτή η κλάση δείχνει ένα δείγμα κώδικα για τη μετατροπή συμβολοσειράς σε διπλό πρόγραμμα java * χρησιμοποιώντας τη μέθοδο Double.parseDouble() * * * @author * */ public class StringToDoubleDemo1 { public static void main(String[] args) { // Ανάθεση "500.00" στη μεταβλητή String originalPriceStr String originalPriceStr = "50.00D"; // Ανάθεση "30" στη μεταβλητή String originalPriceStr StringdiscountStr = "+30.0005d"; System.out.println("originalPriceStr : "+originalPriceStr); System.out.println("discountStr : "+discountStr); // Pass originalPriceStr π.χ. String "50.00D" ως παράμετρος στην parseDouble() // για να μετατρέψει την τιμή του string 'originalPriceStr' σε double // και να την εκχωρήσει στη μεταβλητή double originalPrice double originalPrice = Double.parseDouble(originalPriceStr); // Pass discountStrπ.χ. String "30.005d" ως παράμετρος στην parseDouble() // για να μετατρέψει την τιμή του string 'discountStr' σε double // και να την αναθέσει στη μεταβλητή double discount double discount = Double.parseDouble(discountStr); System.out.println("Καλώς ήρθατε, η αρχική μας τιμή είναι : $"+originalPrice+""); System.out.println("Προσφέρουμε έκπτωση : "+discount+"%"); //Υπολογισμός νέας τιμής μετά την έκπτωση double newPrice =αρχικήΤιμή - ((αρχικήΤιμή*έκπτωση)/100); //Εκτυπώστε τη νέα τιμή μετά την έκπτωση στην κονσόλα System.out.println("Απολαύστε τη νέα ελκυστική τιμή μετά την έκπτωση: $"+νέαΤιμή+""); } } 

Εδώ είναι η έξοδος του προγράμματος:

originalPriceStr :50.00D

discountStr :+30.0005d

Καλώς ήρθατε, η αρχική μας τιμή είναι: $50.0

Προσφέρουμε έκπτωση :30.0005%

Απολαύστε νέα ελκυστική τιμή μετά την έκπτωση : $34.99975

Εδώ, η συμβολοσειρά είναι "50.00D" στην οποία το D δηλώνει τη συμβολοσειρά ως διπλή τιμή.

 String originalPriceStr = "50.00D", 

Αυτό το originalPriceStr, δηλαδή "50.00D", περνά ως παράμετρος στη μέθοδο parseDouble() και η τιμή εκχωρείται στη μεταβλητή double originalPrice.

 double originalPrice = Double.  parseDouble  (originalPriceStr), 

Η μέθοδος parseDouble() μετατρέπει την τιμή String σε double και αφαιρεί τα "+" ή "-" και τα 'D','d'.

Ως εκ τούτου, όταν εκτυπώνουμε την αρχική τιμή στην κονσόλα:

 Σύστημα.  out  .println("Καλώς ήρθατε, η αρχική μας τιμή είναι : $"+αρχικήΤιμή+""), 

Η ακόλουθη έξοδος θα εμφανιστεί στην κονσόλα:

Καλώς ήρθατε, η αρχική μας τιμή είναι: $50.0

Ομοίως, για το String discountStr = "+30.0005d"; Το String "+30.0005d" μπορεί να μετατραπεί σε double χρησιμοποιώντας τη μέθοδο parseDouble() ως εξής:

 double discount = Double.  parseDouble  (discountStr), 

Ως εκ τούτου, όταν εκτυπώνουμε έκπτωση στην κονσόλα.

 System.out.println("Προσφέρουμε έκπτωση : "+εκπτωση+"%"), 

Η ακόλουθη έξοδος θα εμφανιστεί στην κονσόλα:

 Προσφέρουμε έκπτωση :30.0005% 

Επιπλέον, στο πρόγραμμα εκτελούνται αριθμητικές πράξεις σε αυτές τις αριθμητικές τιμές.

#2) Μέθοδος Double.valueOf()

Η μέθοδος valueOf() παρέχεται από την κλάση περιτύλιξης Double.

Ας ρίξουμε μια ματιά στην υπογραφή της μεθόδου παρακάτω:

public static Double valueOf(String str) throws NumberFormatException

Αυτή η στατική μέθοδος επιστρέφει το αντικείμενο τύπου Double που έχει την τιμή double η οποία αντιπροσωπεύεται από την καθορισμένη συμβολοσειρά str.

Εδώ, η παράμετρος 'str' είναι ένα αλφαριθμητικό που περιέχει την αναπαράσταση double που πρέπει να αναλυθεί και επιστρέφει την τιμή Double που αναπαρίσταται από το όρισμα σε δεκαδική μορφή.

Αυτή η μέθοδος εκτοξεύει μια Εξαίρεση NumberFormatException όταν το String δεν περιέχει αριθμητική τιμή που μπορεί να αναλυθεί.

Ας προσπαθήσουμε να καταλάβουμε πώς να χρησιμοποιήσουμε αυτή τη μέθοδο Double.valueOf() με τη βοήθεια του ακόλουθου προγράμματος-δείγματος:

 package com.softwaretestinghelp; /** * Αυτή η κλάση δείχνει ένα δείγμα κώδικα για τη μετατροπή συμβολοσειράς σε διπλό πρόγραμμα java * χρησιμοποιώντας τη μέθοδο Double.valueOf() * * * @author * */ public class StringToDoubleDemo2 { public static void main(String[] args) { // Assign "1000.0000d" to String variable depositAmountStr String depositAmountStr = "1000.0000d"; // Assign "5.00D" to String variable interestRate StringinterestRateStr = "+5.00D"; // Ανάθεση "2" στην String μεταβλητή yearsStr String yearsStr = "2"; System.out.println("depositAmountStr : "+depositAmountStr); System.out.println("interestRateStr : "+interestRateStr); System.out.println("yearsStr : "+yearsStr); // Pass depositAmountStr i.e.String "1000.0000d" as a parameter to valueOf() // to convert string 'depositAmountStr' value to double // and assignστη μεταβλητή double depositAmount Double depositAmount = Double.valueOf(depositAmountStr); // Pass interestRateStr i.e.String "5.00D" as a parameter to valueOf() // to convert string 'interestRateStr' value to double // and assign it to double variable discount Double interestRate = Double.valueOf(interestRateStr); // Pass yearsStr i.e.String "2" as a parameter to valueOf() // to convert string'yearsStr' σε double // και εκχωρήστε την στη μεταβλητή double discount Double years = Double.valueOf(yearsStr); System.out.println("Καλώς ήρθατε στην ABC Bank. Ευχαριστούμε για την κατάθεση : $"+ depositAmount+" στην τράπεζά μας"); System.out.println("Η τράπεζά μας προσφέρει ελκυστικό επιτόκιο για 1 έτος : "+interestRate+"%"); //Υπολογίστε τους τόκους μετά από 2 χρόνια στο ποσό της κατάθεσης Double interestEarned =((depositAmount*interestRate*years)/100); System.out.println("Θα λάβετε συνολικούς τόκους μετά από "+years+" είναι $"+interestEarned+""); } } } 

Εδώ είναι η έξοδος του προγράμματος:

depositAmountStr :1000.0000d

interestRateStr :+5.00D

yearsStr :2

Καλώς ήρθατε στην ABC Bank. Ευχαριστούμε για την κατάθεση : $1000.0 στην τράπεζά μας

Η τράπεζά μας προσφέρει ελκυστικό επιτόκιο για 1 έτος :5.0%

Θα λάβετε συνολικό τόκο μετά το 2,0 είναι $100,0

Εδώ, αναθέτουμε τιμές σε μεταβλητές String:

 String depositAmountStr = "1000.0000d"; String interestRateStr = "+5.00D"; String yearsStr = "2", 

Χρησιμοποιήστε τη μέθοδο valueOf() για να μετατρέψετε αυτές τις τιμές σε Double, όπως φαίνεται παρακάτω.

 Double depositAmount = Double.  valueOf  (depositAmountStr), 

Χρησιμοποιούμε τις ίδιες τιμές για περαιτέρω αριθμητικό υπολογισμό ως εξής:

 Double interestEarned = ((depositAmount*interestRate*years)/100), 

#3) Μέθοδος DecimalFormat Parse ()

Για το σκοπό αυτό, ανακτούμε πρώτα την περίπτωση της κλάσης NumberFormat και χρησιμοποιούμε τη μέθοδο parse() της κλάσης NumberFormat.

Ας ρίξουμε μια ματιά στην υπογραφή της μεθόδου παρακάτω:

public Number parse(String str) throws ParseException

Αυτή η μέθοδος αναλύει το καθορισμένο κείμενο. Χρησιμοποιεί ένα αλφαριθμητικό από τη θέση έναρξης και επιστρέφει τον αριθμό.

Αυτή η μέθοδος εκτοξεύει μια Εξαίρεση ParseException αν η αρχή του String δεν βρίσκεται σε ένα αναλύσιμο αρχείο.

Ας δούμε το παρακάτω παράδειγμα προγράμματος. Αυτό το παράδειγμα κώδικα αναλύει μορφοποιημένο αλφαριθμητικό κειμένου που περιέχει διπλή τιμή χρησιμοποιώντας τη μέθοδο parse():

 package com.softwaretestinghelp; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.ParseException; /** * Αυτή η κλάση δείχνει ένα παράδειγμα κώδικα για τη μετατροπή συμβολοσειράς σε διπλάσιο πρόγραμμα java * χρησιμοποιώντας τη μέθοδο DecimalFormat parse () * * * @author * * */ public class StringToDoubleDemo3 { public static void main(String [] args) throws ParseException { // Assign "5,000,00.00" to Stringμεταβλητή pointsString String pointsString = "5,000,00.00"; System.out.println("pointsString : "+pointsString); // Περάστε το pointsString δηλαδή το String "+5,000,00.00" ως παράμετρο στη // μέθοδο DecimalFormat.getNumberInstance(). parse() // για να μετατρέψετε την τιμή του string pointsString σε double // και να την αναθέσετε στη διπλή μεταβλητή points NumberFormat num = DecimalFormat.getNumberInstance(); Number pointsNum =num.parse(pointsString); double points = pointsNum.doubleValue(); System.out.println("Συγχαρητήρια! Κερδίσατε : "+points+" πόντους!"); } } 

Εδώ είναι η έξοδος του προγράμματος:

pointsString :5,000,00.00

Συγχαρητήρια! Κερδίσατε :500000.0 πόντους!

Εδώ, το μορφοποιημένο κείμενο εκχωρείται στη μεταβλητή string ως εξής:

 String pointsString = "5,000,00.00", 

Αυτό το μορφοποιημένο κείμενο "5.000.00,00" περνά ως όρισμα στη μέθοδο num.parse().

Πριν από αυτό δημιουργείται η περίπτωση της κλάσης NumberFormat χρησιμοποιώντας την DecimalFormat. getNumberInstance ().

 Μέθοδος DecimalFormat.getNumberInstance(). NumberFormat num = DecimalFormat.getNumberInstance(); Number pointsNum = num.parse(pointsString), 

Έτσι, η διπλή τιμή ανακτάται με την κλήση της μεθόδου doubleValue () όπως φαίνεται παρακάτω.

 double points = pointsNum.doubleValue(), 

#4) New Double() Constructor

Ένας ακόμη τρόπος μετατροπής Java String σε double είναι η χρήση ενός κατασκευαστή της κλάσης Double(String str)

public Double(String str) throws NumberFormatException

Αυτός ο κατασκευαστής κατασκευάζει και επιστρέφει ένα αντικείμενο Double με την τιμή τύπου double που αντιπροσωπεύεται από το String που καθορίζεται.

str είναι μια συμβολοσειρά για μετατροπή σε Double

Αυτή η μέθοδος πετάει μια εξαίρεση που ονομάζεται NumberFormatException εάν το String δεν έχει μια αναλύσιμη αριθμητική τιμή.

Ας προσπαθήσουμε να καταλάβουμε πώς να χρησιμοποιήσουμε αυτόν τον κατασκευαστή Double (String str) με τη βοήθεια του ακόλουθου προγράμματος-δείγματος που υπολογίζει το εμβαδόν του κύκλου μετατρέποντας πρώτα την ακτίνα σε double από String.

 package com.softwaretestinghelp; /** * Αυτή η κλάση δείχνει ένα δείγμα κώδικα για τη μετατροπή συμβολοσειράς σε διπλό πρόγραμμα java * χρησιμοποιώντας τον νέο κατασκευαστή Double(String str) * * * @author * */ public class StringToDoubleDemo4 { public static void main(String[] args) { // Ανάθεση "+15.0005d" στη μεταβλητή String radiusStr String radiusStr = "+15.0005d"; System.out.println("radiusStr : "+radiusStr); // Pass radiusStrπ.χ. String "+15.0005d" ως παράμετρος σε new Double() // για να μετατρέψετε την τιμή του string radiusStr σε double // και να την αναθέσετε στη μεταβλητή double radius double radius =  νέο  Διπλό  (radiusStr)  .doubleValue(); System.out.println("Ακτίνα κύκλου : "+ακτίνα+" cm"); //Υπολογισμός του εμβαδού του κύκλου double area = (3.14*(ακτίνα*ακτίνα)); System.out.println("Εμβαδόν κύκλου : "+area+" cm"); } } 

Εδώ είναι η έξοδος του προγράμματος:

radiusStr :+15.0005d

Ακτίνα κύκλου :15.0005 cm

Εμβαδόν κύκλου :706.5471007850001 cm

Στο παραπάνω πρόγραμμα, η τιμή της ακτίνας του κύκλου εκχωρείται στη μεταβλητή String:

 String radiusStr = "+15.0005d", 

Για τον υπολογισμό του εμβαδού του κύκλου, η ακτίνα μετατρέπεται σε διπλή τιμή χρησιμοποιώντας τον κατασκευαστή Double() που επιστρέφει τιμή τύπου δεδομένων Double. Στη συνέχεια, καλείται η μέθοδος doubleValue() για να ανακτήσει την τιμή της πρωτογενούς ημερομηνίας τύπου double, όπως φαίνεται παρακάτω.

 double radius =  νέο  Double (radiusStr).doubleValue(), 

Σημείωση: Ο κατασκευαστής Double(String str) έχει καταργηθεί από τη Java 9.0. Αυτός είναι ο λόγος για τον οποίο το Double έχει διαγραμμένη γραμμή στην παραπάνω δήλωση.

Ως εκ τούτου, αυτός ο τρόπος προτιμάται λιγότερο τώρα. Έτσι, καλύψαμε όλες τις μεθόδους για τη μετατροπή μιας συμβολοσειράς Java σε έναν διπλό πρωτόγονο τύπο δεδομένων Java.

Ας ρίξουμε μια ματιά σε μερικές από τις συχνές ερωτήσεις σχετικά με τη μέθοδο μετατροπής String σε double.

Συχνές ερωτήσεις

Q #1) Μπορούμε να μετατρέψουμε συμβολοσειρά σε double στη Java;

Απαντήστε: Ναι , στη Java, η μετατροπή String σε double μπορεί να γίνει με τις ακόλουθες μεθόδους της κλάσης Java:

  • Double.parseDouble(String)
  • Double.valueOf(String)
  • DecimalFormat parse()
  • new Double(String s)

Q #2) Πώς μετατρέπετε μια συμβολοσειρά σε διπλό;

Απαντήστε: Η Java παρέχει διάφορες μεθόδους για τη μετατροπή μιας συμβολοσειράς σε double.

Παρακάτω δίνονται οι μέθοδοι της κλάσης Java:

  • Double.parseDouble(String)
  • Double.valueOf(String)
  • DecimalFormat parse()
  • new Double(String s)

Q #3) Είναι το double στη Java;

Απαντήστε: Ναι . Η Java παρέχει διάφορους πρωτόγονους τύπους δεδομένων για την αποθήκευση αριθμητικών τιμών, όπως short, int, double, κ.λπ. Το double είναι ένας πρωτόγονος τύπος δεδομένων της Java για την αναπαράσταση ενός αριθμού κινητής υποδιαστολής. Αυτός ο τύπος δεδομένων χρειάζεται 8 bytes για αποθήκευση με ακρίβεια κινητής υποδιαστολής 64-bit. Αυτός ο τύπος δεδομένων είναι μια κοινή επιλογή για την αναπαράσταση δεκαδικών τιμών.

Q #4) Τι είναι ο σαρωτής στη Java;

Απαντήστε: Η Java παρέχει την κλάση java.util.Scanner για να λαμβάνετε δεδομένα από έναν χρήστη. Διαθέτει διάφορες μεθόδους για να λαμβάνετε δεδομένα σε διαφορετικούς τύπους δεδομένων. Για παράδειγμα, Η nextLine() χρησιμοποιείται για την ανάγνωση της τιμής δεδομένων τύπου String. Για την ανάγνωση της τιμής δεδομένων τύπου double, παρέχει τη μέθοδο nextDouble().

Συμπέρασμα

Σε αυτό το σεμινάριο, είδαμε πώς να μετατρέπουμε τον τύπο δεδομένων String σε πρωτόγονο τύπο δεδομένων double στη Java χρησιμοποιώντας τις ακόλουθες μεθόδους κλάσης μαζί με απλά παραδείγματα.

  • Double.parseDouble(String)
  • Double.valueOf(String)
  • DecimalFormat parse()
  • new Double(String s)
Κύλιση στην κορυφή