ตัวอย่างในบทความนี้อธิบายการใช้งานคลาส BigDecimal อย่างง่ายใน Java เป็นทักษะที่ใช้งานได้จริงในการเขียนโปรแกรม Java โดยจะมีการแชร์กับทุกคนเพื่อใช้อ้างอิง การวิเคราะห์การใช้งานเฉพาะมีดังนี้:
โดยทั่วไปแล้ว เมื่อพูดถึงการคำนวณทางธุรกิจใน Java เราทุกคนรู้ดีว่า float และ double ไม่สามารถนำมาใช้ได้ เนื่องจากไม่สามารถคำนวณได้อย่างแม่นยำ อย่างไรก็ตาม ผู้ออกแบบ Java จัดเตรียมคลาส BigDecimal ที่มีประโยชน์มากให้กับโปรแกรมเมอร์ ซึ่งสามารถปรับปรุงข้อบกพร่องของคลาส float และ double ที่ไม่สามารถคำนวณได้อย่างแม่นยำ คลาส BigDecimal อยู่ภายใต้แพ็คเกจคลาส java.maths ขั้นแรกเรามาดูวิธีการสร้างวัตถุ BigDecimal มีตัวสร้างหลายตัว ต่อไปนี้คือสองตัวที่ใช้บ่อยที่สุดในการสาธิต: ตัวหนึ่งคือ BigDecimal(double val) และอีกตัวคือ BigDecimal(String str) ดูเหมือนจะไม่มีความแตกต่างกันมากนักระหว่างทั้งสอง แต่ตามที่คำอธิบาย API บอกว่า:
/*ผลลัพธ์ของ Constructor นี้ค่อนข้างคาดเดาไม่ได้ อาจถือว่า new BigDecimal(.1) เท่ากับ .1 ทุกประการ แต่จริงๆ แล้วเท่ากับ .1000000000000000055511151231257827021181583404541015625 ที่เป็นเช่นนี้ เนื่องจาก .1 ไม่สามารถแสดงเป็น a ได้ทั้งหมด สองเท่า (หรือเพื่อสิ่งนั้น สสารในฐานะเศษส่วนไบนารีของความยาวจำกัดใดๆ) ดังนั้น ค่ายาวที่ถูกส่งผ่านไปยังตัวสร้างจะไม่เท่ากับ .1 อย่างแน่นอน ซึ่งจะไม่ปรากฏให้เห็น ในทางกลับกัน ตัวสร้าง (สตริง) สามารถคาดเดาได้อย่างสมบูรณ์แบบ : new BigDecimal(".1") เท่ากับ .1 อย่างแน่นอน ดังที่เราคาดหวังไว้ ดังนั้น โดยทั่วไปขอแนะนำว่าควรใช้ตัวสร้าง (String) แทนอันนี้*/กล่าวคือ ตัวสร้างที่ใช้ double เป็นพารามิเตอร์ไม่สามารถสร้างออบเจ็กต์ BigDecimal ได้อย่างถูกต้อง คุณต้องระบุสภาพแวดล้อมบริบท นั่นคือ ระบุบิตที่แม่นยำ ตัวสร้างที่ใช้วัตถุ String เป็นพารามิเตอร์สามารถสร้างวัตถุ BigDecimal ได้อย่างถูกต้อง โปรดดูรหัสด้านล่าง:
นำเข้า java.math.*; คลาสสาธารณะ TestBigDecimal { โมฆะคงที่สาธารณะ main (String args []) { BigDecimal bd = new BigDecimal ("10.123"); BigDecimal bd1 = new BigDecimal (10.123); "/n"+ bd1); }}เอาต์พุตหลังจากทำงาน:
10.123
10.1229999999999993320898283855058252811431884765625
ดังนั้นเมื่อเราเลือกคอนสตรัคเตอร์ก็ขึ้นอยู่กับความต้องการเฉพาะ
นอกจากนี้ หลายๆ คนจะถามถึงวิธีการแปลงออบเจ็กต์ประเภทพื้นฐาน เช่น int, float, double, long และ BigDecimal object เป็นและจากกัน ง่ายมาก:
ประเภทพื้นฐานจะถูกแปลงเป็นอ็อบเจ็กต์ BigDecimal ที่สอดคล้องกันผ่านตัวสร้าง และคลาส BigDecimal จัดเตรียมวิธีการต่างๆ เช่น intValue(), floatValue(), doubleValue() และ longValue() เพื่อแปลงอ็อบเจ็กต์ BigDecimal ให้เป็นค่าที่สอดคล้องกัน
เกี่ยวกับวิธีคำนวณ BigDecimal ฉันเอาคำถามของบุคคลในฟอรัมเป็นตัวอย่างเพื่อเขียนวิธีการคำนวณของ BigDecimal โดยย่อ หัวข้อคือ: หลี่ไป๋กำลังเดินอยู่บนถนนโดยไม่มีอะไรเกิดขึ้น โดยถือหม้อไปซื้อไวน์ เมื่อคุณพบกับร้านค้า คุณจะเพิ่มเป็นสองเท่า เมื่อคุณเห็นดอกไม้ คุณจะดื่มโดว์ เมื่อคุณพบกับดอกไม้และร้านค้า คุณจะดื่มไวน์จนหมดในหม้อของหลี่ไป๋ ?
คำถามนี้ควรถูกผลักดันไปข้างหน้าจากหลังไปหน้า และควรกลับการคำนวณ และในที่สุดก็จะได้ปริมาตรของไวน์ดั้งเดิม
นำเข้า java.math.*; public class Libai { public static void main (String args []) { BigDecimal volumn = new BigDecimal ("0"); for (int i = 0; i <5; i ++) { volumn = volumn .add(ใหม่ BigDecimal("1")); ปริมาตร = volumn.divide(ใหม่ BigDecimal("2")); System.out.print(เล่ม); }}ผลการวิ่ง:
0.96875
ฉันหวังว่าสิ่งที่บทความนี้อธิบายจะเป็นประโยชน์ต่อการเรียนรู้การเขียนโปรแกรม Java ของทุกคน