ในบทช่วยสอนนี้ เราจะได้เรียนรู้วิธีแปลงสตริง Java เป็นประเภทข้อมูลสองเท่า:

เราจะเรียนรู้วิธีใช้วิธีการต่อไปนี้เพื่อแปลงสตริงเป็นสองเท่า ค่าใน Java:

  • Double.parseDouble(String)
  • Double.valueOf(String)
  • DecimalFormat parse()
  • ใหม่ Double (String s)

วิธีการแปลง Java String เป็นสองเท่า

มีบางสถานการณ์ที่ในโปรแกรม Java ของเรา เราต้องทำการคำนวณทางคณิตศาสตร์บางอย่างกับค่าตัวเลข เช่น การคำนวณใบเรียกเก็บเงิน การคำนวณดอกเบี้ยของจำนวนเงินฝาก เป็นต้น แต่อินพุตสำหรับโปรแกรมนี้สามารถใช้ได้ ในรูปแบบข้อความ เช่น Java String data type .

ตัวอย่างเช่น สำหรับการคำนวณบิลร้านขายของชำ - ราคาสินค้าและจำนวนหน่วยที่ซื้อจะเป็นอินพุต จากฟิลด์ข้อความของเว็บเพจหรือพื้นที่ข้อความของเว็บเพจในรูปแบบข้อความ เช่น ชนิดข้อมูล Java String ในสถานการณ์ดังกล่าว ก่อนอื่นเราต้องแปลงสตริงนี้เพื่อดึงข้อมูลตัวเลขใน Java primitive data type double

มาดูรายละเอียดวิธีการต่างๆ ทีละวิธี

#1) วิธีการ Double.parseDouble()

parseDouble() มีให้โดยคลาส Double คลาส Double เรียกว่าคลาส Wrapper เนื่องจากมันรวมค่าของประเภทดั้งเดิมเป็นสองเท่าในวัตถุ

มาดูลายเซ็นเมธอดกันด้านล่าง:

public static double parseDouble(String str) โยน NumberFormatException

นี่คือวิธีการแบบคงที่ในคลาส Double ซึ่งส่งคืนประเภทข้อมูลคู่ที่แสดงโดย สตริงที่ระบุ

ที่นี่ พารามิเตอร์ 'str' คือสตริงที่มีการแทนค่าคู่ที่จะแยกวิเคราะห์และส่งกลับค่าคู่ที่แสดงโดยอาร์กิวเมนต์

สิ่งนี้ เมธอดโยนข้อยกเว้น NumberFormatException เมื่อสตริงไม่มีคู่ที่แยกวิเคราะห์ได้

ตัวอย่าง ให้เราพิจารณาสถานการณ์เมื่อเราต้องการคำนวณราคาหลังจากได้รับ ส่วนลดจากราคาเดิมของสินค้า

สำหรับสิ่งนี้ ค่าที่ป้อน เช่น ราคาเดิมของสินค้าและส่วนลดจะมาจากระบบการเรียกเก็บเงินของคุณในรูปแบบข้อความ และเราต้องการดำเนินการทางคณิตศาสตร์กับค่าเหล่านี้ เพื่อคำนวณราคาใหม่หลังจากหักส่วนลดจากราคาเดิมแล้ว

มาดูวิธีใช้เมธอด Double.parseDouble() เพื่อแยกค่าสตริงให้เป็นสองเท่าในโค้ดตัวอย่างต่อไปนี้:

package com.softwaretestinghelp; /** * This class demonstrates sample code to convert string to double java program * using Double.parseDouble() method * * @author * */ public class StringToDoubleDemo1 { public static void main(String[] args) { // Assign "500.00" to String variable originalPriceStr String originalPriceStr = "50.00D"; // Assign "30" to String variable originalPriceStr String discountStr = "+30.0005d"; System.out.println("originalPriceStr :"+originalPriceStr); System.out.println("discountStr :"+discountStr); // Pass originalPriceStr i.e. String “50.00D” as a parameter to parseDouble() // to convert string 'originalPriceStr' value to double // and assign it to double variable originalPrice double originalPrice = Double.parseDouble(originalPriceStr); // Pass discountStr i.e. String “30.005d” as a parameter to parseDouble() // to convert string 'discountStr' value to double // and assign it to double variable discount double discount = Double.parseDouble(discountStr); System.out.println("Welcome, our original price is : $"+originalPrice+""); System.out.println("We are offering discount :"+discount+"%"); //Calculate new price after discount double newPrice = originalPrice - ((originalPrice*discount)/100); //Print new price after getting discount on the console System.out.println("Enjoy new attractive price after discount: $"+newPrice+""); } } 

นี่คือโปรแกรม Output:

originalPriceStr :50.00D

discountStr :+30.0005d

ยินดีต้อนรับ ราคาเดิมของเรา คือ : $50.0

เราเสนอส่วนลด :30.0005%

เพลิดเพลินกับราคาใหม่ที่น่าสนใจหลังหักส่วนลด : $34.99975

ที่นี่ สตริงคือ “50.00D” ซึ่ง D ระบุว่าสตริงเป็น ค่าสองเท่า

String originalPriceStr = "50.00D";

PriceStr เดิมนี้ เช่น “50.00D” คือส่งผ่านเป็นพารามิเตอร์ไปยังวิธีการ parseDouble() และค่าถูกกำหนดให้กับตัวแปรคู่ originalPrice

double originalPrice = Double.parseDouble(originalPriceStr);

วิธีการ parseDouble() แปลงค่าสตริงเป็นสองเท่าและลบ “+” หรือ “-“ และ 'D',' d'.

ดังนั้น เมื่อเราพิมพ์ originalPrice บนคอนโซล:

System.out.println("Welcome, our original price is : $"+originalPrice+"");

เอาต์พุตต่อไปนี้จะแสดงบนคอนโซล:

ยินดีต้อนรับ ราคาเดิมของเราคือ : $50.0

ในทำนองเดียวกัน สำหรับ String discountStr = “+30.0005d”; สตริง “+30.0005d” สามารถแปลงเป็นสองเท่าโดยใช้วิธีการ parseDouble() เป็น:

double discount = Double.parseDouble(discountStr);

ดังนั้น เมื่อเราพิมพ์ส่วนลดบนคอนโซล

System.out.println("We are offering discount :"+discount+"%");

ผลลัพธ์ต่อไปนี้จะแสดงบน คอนโซล:

We are offering discount :30.0005%

นอกจากนี้ การดำเนินการทางคณิตศาสตร์จะดำเนินการกับค่าตัวเลขเหล่านี้ในโปรแกรม

#2) เมธอด Double.valueOf()

valueOf() มีให้ โดยคลาส wrapper Double

มาดูลายเซ็นเมธอดด้านล่าง:

public static Double valueOf(String str) โยน NumberFormatException

เมธอดแบบสแตติกนี้ส่งคืนวัตถุประเภทข้อมูล Double ซึ่งมีค่าสองเท่าซึ่งแสดงโดย String str ที่ระบุ

ที่นี่ พารามิเตอร์ 'str' คือสตริงที่มีการแทนค่าสองเท่าของ แยกวิเคราะห์และส่งกลับค่าคู่ที่แสดงโดยอาร์กิวเมนต์เป็นทศนิยม

เมธอดนี้แสดงข้อยกเว้น NumberFormatException เมื่อสตริงไม่มีค่าตัวเลขที่สามารถเป็นได้แยกวิเคราะห์

ให้เราพยายามทำความเข้าใจวิธีใช้เมธอด Double.valueOf() ด้วยความช่วยเหลือของโปรแกรมตัวอย่างต่อไปนี้:

package com.softwaretestinghelp; /** * This class demonstrates sample code to convert string to double java program * using Double.valueOf() method * * @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 String interestRateStr = "+5.00D"; // Assign "2" to String variable 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 it to double variable 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' value to double // and assign it to double variable discount Double years = Double.valueOf(yearsStr); System.out.println("Welcome to ABC Bank. Thanks for depositing : $"+ depositAmount+" with our bank"); System.out.println("Our bank is offering attractive interest rate for 1 year :"+interestRate+"%"); //Calculate interest after 2 years on the deposit amount Double interestEarned = ((depositAmount*interestRate*years)/100); System.out.println("You will be receiving total interest after "+years+" is $"+interestEarned+""); } }

นี่คือ โปรแกรมเอาต์พุต:

depositAmountStr :1000.0000d

interestRateStr :+5.00D

yearsStr :2

ยินดีต้อนรับสู่ ABC Bank ขอบคุณที่ฝากเงิน : $1,000.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 () Method

สำหรับสิ่งนี้ อันดับแรก เราจะเรียกข้อมูลอินสแตนซ์ของคลาส NumberFormat และใช้ parse() วิธีการ ของคลาส NumberFormat

ให้เราดูที่ลายเซ็นเมธอดด้านล่าง:

สาธารณะ Number parse(String str) โยน ParseException

วิธีนี้จะแยกวิเคราะห์ข้อความที่ระบุ สิ่งนี้ใช้สตริงจากตำแหน่งเริ่มต้นและส่งกลับตัวเลข

วิธีนี้ส่งข้อยกเว้น ParseException หากจุดเริ่มต้นของสตริงไม่ได้อยู่ในการแยกวิเคราะห์

ให้เราดูโปรแกรมตัวอย่างด้านล่าง โค้ดตัวอย่างนี้แยกวิเคราะห์สตริงข้อความที่จัดรูปแบบซึ่งมีค่าสองเท่าโดยใช้เมธอด parse():

package com.softwaretestinghelp; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.ParseException; /** * This class demonstrates sample code to convert string to double java program * using DecimalFormat parse () method * * @author * */ public class StringToDoubleDemo3 { public static void main(String [] args) throws ParseException { // Assign "5,000,00.00" to String variable pointsString String pointsString = "5,000,00.00"; System.out.println("pointsString :"+pointsString); // Pass pointsString i.e. String “+5,000,00.00” as a parameter to // DecimalFormat.getNumberInstance(). parse() method // to convert string pointsString value to double // and assign it to double variable points NumberFormat num = DecimalFormat.getNumberInstance(); Number pointsNum = num.parse(pointsString); double points = pointsNum.doubleValue(); System.out.println("Congratulations ! You have earned :"+points+" points!"); } } 

นี่คือเอาต์พุตของโปรแกรม:

pointsString:5,000,00.00

ยินดีด้วย ! คุณได้รับ :500000.0 คะแนน!

ที่นี่ ข้อความที่จัดรูปแบบถูกกำหนดให้กับตัวแปรสตริงดังนี้:

String pointsString = "5,000,00.00";

ข้อความที่จัดรูปแบบ “5,000,00.00” นี้ผ่าน เป็นอาร์กิวเมนต์ของเมธอด num.parse()

ก่อนหน้านั้นอินสแตนซ์คลาส NumberFormat จะถูกสร้างขึ้นโดยใช้เมธอด DecimalFormat. getNumberInstance ()

DecimalFormat.getNumberInstance() method. NumberFormat num = DecimalFormat.getNumberInstance(); Number pointsNum = num.parse(pointsString);

ดังนั้น เพิ่มเป็นสองเท่า ค่าถูกเรียกโดยการเรียกใช้เมธอด doubleValue () ดังที่แสดงด้านล่าง

double points = pointsNum.doubleValue();

#4) New Double() Constructor

อีกหนึ่งวิธีในการแปลง Java String เป็น double คือการใช้ Double class constructor( String str)

public Double(String str) โยน NumberFormatException

ตัวสร้างนี้สร้างและส่งคืนวัตถุ Double ที่มีค่าประเภทคู่ที่แสดงโดยสตริงที่ระบุ3

str เป็นสตริงสำหรับการแปลงเป็น Double

วิธีนี้จะส่งข้อยกเว้นที่เรียกว่า NumberFormatException หากสตริงไม่มีค่าตัวเลขที่แยกวิเคราะห์ได้3

ให้เราพยายามทำความเข้าใจวิธีใช้ตัวสร้าง Double (String str) ด้วยความช่วยเหลือของโปรแกรมตัวอย่างต่อไปนี้ที่คำนวณพื้นที่ของวงกลมโดยแปลงรัศมีเป็นสองเท่าจาก String ก่อน

package com.softwaretestinghelp; /** * This class demonstrates sample code to convert string to double java program * using new Double(String str) constructor * * @author * */ public class StringToDoubleDemo4 { public static void main(String[] args) { // Assign "+15.0005d" to String variable radiusStr String radiusStr = "+15.0005d"; System.out.println("radiusStr :"+radiusStr); // Pass radiusStr i.e.String “+15.0005d” as a parameter to new Double() // to convert string radiusStr value to double // and assign it to double variable radius double radius = newDouble(radiusStr).doubleValue(); System.out.println("Radius of circle :"+radius+" cm"); //Calculate area of circle double area = (3.14*(radius*radius)); System.out.println("Area of circle :"+area+" cm"); } }

นี่คือผลลัพธ์ของโปรแกรม:

radiusStr :+15.0005d

รัศมีวงกลม :15.0005 ซม.

พื้นที่วงกลม :706.5471007850001 ซม.

ในโปรแกรมข้างต้น ค่ารัศมีของวงกลมถูกกำหนดให้กับตัวแปรสตริง:

String radiusStr = "+15.0005d";

ในการคำนวณพื้นที่ของวงกลม รัศมีจะถูกแปลงเป็นค่าสองเท่าโดยใช้ตัวสร้าง Double() ซึ่งจะส่งคืนค่าประเภทข้อมูลแบบ Double จากนั้นจะมีการเรียกใช้เมธอด doubleValue() เพื่อดึงค่าของประเภทวันที่ดั้งเดิมเป็นสองเท่าดังที่แสดงด้านล่าง

double radius = new Double (radiusStr).doubleValue();

หมายเหตุ: ตัวสร้าง Double(String str) เลิกใช้แล้วตั้งแต่ Java 9.0 นั่นคือเหตุผลที่ Double ขีดทับในข้อความข้างต้น

ดังนั้น วิธีนี้จึงเป็นที่นิยมน้อยลงในขณะนี้ ดังนั้นเราจึงได้ครอบคลุมวิธีการทั้งหมดสำหรับการแปลง Java String เป็นประเภทข้อมูลดั้งเดิมของ Java สองเท่า

ให้เราดูที่คำถามที่พบบ่อยต่อไปนี้เกี่ยวกับวิธีการแปลง String เป็นสองเท่า3

คำถามที่พบบ่อย

Q #1) เราสามารถแปลงสตริงเป็นสองเท่าใน Java ได้หรือไม่

คำตอบ: ใช่ , ใน Java การแปลงสตริงเป็นสองเท่าสามารถทำได้โดยใช้เมธอดคลาส Java ต่อไปนี้:

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

Q #2) คุณจะเปลี่ยนสตริงให้เป็น double ได้อย่างไร

คำตอบ: 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 ไบต์สำหรับการจัดเก็บที่มีความแม่นยำของทศนิยม 64 บิต ชนิดข้อมูลนี้เป็นตัวเลือกทั่วไปสำหรับการแสดงค่าทศนิยม

Q #4) Scanner ใน Java คืออะไร

คำตอบ: Java มีคลาส java.util.Scanner เพื่อรับข้อมูลจากผู้ใช้ มีวิธีการต่างๆ ในการรับอินพุตในประเภทข้อมูลต่างๆ ตัวอย่าง nextLine() ใช้เพื่ออ่านค่าประเภทข้อมูลสตริง หากต้องการอ่านค่าข้อมูลสองเท่า จะมีเมธอด nextDouble()

สรุป

ในบทช่วยสอนนี้ เราได้เห็นวิธีการแปลงประเภทข้อมูลสตริงเป็นประเภทข้อมูลดั้งเดิมสองเท่าใน Java โดยใช้คลาสต่อไปนี้ วิธีการพร้อมกับตัวอย่างง่ายๆ

  • Double.parseDouble(String)
  • Double.valueOf(String)
  • DecimalFormat parse()
  • new สองเท่า (สตริง s)
เลื่อนขึ้นไปด้านบน