รวบรัด
รูปแบบของ decimalformat มีรูปแบบย่อยและลบเช่น "#, ## 0.00; (#, ## 0.00)"
/*** สร้างโดย Shuai เมื่อปี 2016/7/11 */คลาสสาธารณะหลัก {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {// ค่าบวก bigdecimal bigdecimal = bigdecimal.valueof (-1221115151515151.5416666); // ค่าลบ bigdecimal bigdecimal2 = bigdecimal.valueof (1221115151515151.541666666); รูปแบบสตริง = "#, ## 0.00; (#, ## 0.00)"; DecimalFormat Decimalformat = decimalformat ใหม่ (รูปแบบ); Decimalformat.format (bigdecimal); System.out.println (decimalformat.format (bigdecimal)); System.out.print (Decimalformat.format (BigDecimal2)); -เอาท์พุท:
(12,211,151,515,151.54) 12,211,151,515,151.54
รูปแบบย่อยแต่ละแบบประกอบด้วยคำนำหน้าส่วนตัวเลขและคำต่อท้าย ตัวอย่างเช่นรูปแบบบวกและลบด้านบนสามารถมีคำนำหน้าและคำต่อท้ายที่แตกต่างกันเท่านั้น ส่วนตัวเลขใช้รูปแบบบวกตามค่าเริ่มต้นซึ่งหมายความว่า "#, ## 0.0#; (#)" เทียบเท่ากับ "#, ## 0.0#; (#, ## 0.0#)" - รูปแบบเชิงลบหลังจากนั้นเป็นทางเลือกและไม่สามารถไม่มีค่าลบจะแสดงในรูปแบบเริ่มต้น (คำนำหน้าคือ " -" ในภูมิภาคส่วนใหญ่) เช่น -12,211,151,515,151.54 ที่น่าสนใจสำหรับค่า 0 ค่าจะต้องใช้รูปแบบบวก:
คลาสสาธารณะหลัก {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {bigdecimal bigdecimal = bigdecimal.valueof (-0.00); bigdecimal bigdecimal2 = bigdecimal.valueof (0.00); รูปแบบสตริง = "0.00; (0.00)"; DecimalFormat Decimalformat = decimalformat ใหม่ (รูปแบบ); Decimalformat.format (bigdecimal); System.out.println (decimalformat.format (bigdecimal)); System.out.print (Decimalformat.format (BigDecimal2)); -เอาท์พุท:
0.000.00
DecimalFormat สามารถแยกแยะสตริงได้โดยตรง:
System.out.print (Decimalformat.parse (",,,, 1,515,115.26262", parseposition ใหม่ (0)));เอาท์พุท:
1515115.26262
อย่างที่คุณเห็นเมธอด DecimalFormat.Parse จะถูกลบออกโดย อัตโนมัติ ก่อนหน้า นี้ ควรสังเกตที่นี่ว่าอักขระแรกของสตริงที่แยกวิเคราะห์จะต้องเป็นตัวเลขหรือตามด้วยตัวเลขมิฉะนั้นจะมีข้อยกเว้นจะถูกโยนหรือแยกวิเคราะห์เป็น โมฆะ พารามิเตอร์ที่สองของการแยกวิเคราะห์ระบุตำแหน่งของอักขระตัวแรกที่จะแยกวิเคราะห์ ตัวอย่างข้างต้นตำแหน่ง 0, 1, 2, 3 ถูกแยกวิเคราะห์ทั้งหมดจาก 1 และ 4, 5 ทั้งหมดจะแยกวิเคราะห์จาก 5 นั่นคือถ้า ถ่าย บิตจะถูกเติมด้วยหมายเลขถัดจากนั้น หาก มี อักขระอื่น ๆ ยกเว้นและตัวเลขปรากฏขึ้นก่อนที่จะแยกวิเคราะห์ แยก วิเคราะห์แยกวิเคราะห์แยกวิเคราะห์แยกแยกวิเคราะห์ไปยังตัวเลขก่อนหน้าของอักขระนี้หรือหากมีอักขระอื่นยกเว้นตัวเลขจะปรากฏขึ้นหลังจาก pares (รวม ถึง ) จากนั้นแยกวิเคราะห์แยกวิเคราะห์แยกวิเคราะห์แยกวิเคราะห์แยกแยกวิเคราะห์แยกวิเคราะห์
หากรูปแบบมีหลายกลุ่มของอักขระที่มีตัวเลขต่าง ๆ ตัวอย่างเช่น: "#, ##, ###, ####" จากนั้นจะใช้กลุ่มถัดไปนั่นคือ "#, ##, ###, ####" == "#####, ####"
คลาสสาธารณะหลัก {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {bigdecimal bigdecimal = bigdecimal.valueof (65652323265.626262); รูปแบบสตริง = "#, ##, ##, ###, ### 0.00"; String pattern2 = "#####, ### 0.00"; String pattern3 = "##, ####, ### 0.00"; DecimalFormat Decimalformat = decimalformat ใหม่ (รูปแบบ); System.out.println (decimalformat.format (bigdecimal)); DecimalFormat.applyPattern (pattern2); System.out.println (decimalformat.format (bigdecimal)); DecimalFormat.applyPattern (รูปแบบ 3); System.out.println (decimalformat.format (bigdecimal)); -เอาท์พุท:
656,5232,3265.63656,5232,3265.63656,5232,3265.63
อักขระรูปแบบพิเศษ
วิธีการนับวิทยาศาสตร์
1234 สามารถแสดงเป็น 1.234 x 10^3 และรูปแบบคือ "0. ### e0" ซึ่งจะจัดรูปแบบ 1234 ถึง 1.234E3
จำนวนจำนวนเต็ม:
จำนวนตัวเลขที่สำคัญนั้นมาจากผลรวมของจำนวนขั้นต่ำของตัวเลขจำนวนเต็มและจำนวนหลักของทศนิยมสูงสุด ตัวอย่างเช่น "## 0. ## e0" จำนวนจำนวนเต็มขั้นต่ำของจำนวนเต็มคือ 1 และจำนวนสูงสุดของเลขทศนิยมคือ 2 จากนั้นจำนวนที่ถูกต้องคือ 3 และรูปแบบ 12345 คือ "12.3e3" ยกเว้นหมายเลขที่ถูกต้องรายการอื่น ๆ จะถูกละเว้น
กฎการปัดเศษตัวเลข
RoundingMode สามารถตั้งค่าผ่านวิธี decimalformat.setRoundingMode ค่าเริ่มต้นคือ RoundingMode.half_even
มันไม่ได้ซิงค์ หากเข้าถึงได้หลายเธรดคุณต้องใช้การซิงโครไนซ์ด้วยตัวเอง
ขอแนะนำให้สร้างอินสแตนซ์รูปแบบแยกต่างหากสำหรับแต่ละเธรด หากหลายเธรดเข้าถึงรูปแบบในเวลาเดียวกันจะต้องซิงโครไนซ์ภายนอก
ตัวอย่าง
// พิมพ์ตัวเลขโดยใช้จำนวนจำนวนเต็มจำนวนเต็มสกุลเงิน // และรูปแบบเปอร์เซ็นต์สำหรับสถานที่ตั้งแต่ละตำแหน่ง [] locales = numberFormat.getAvailableLocales (); double mynumber = -1234.56; รูปแบบตัวเลข สำหรับ (int j = 0; j <4; ++ j) {system.out.println ("รูปแบบ"); สำหรับ (int i = 0; i <locales.length; ++ i) {ถ้า (location [i] .getCountry (). ความยาว () == 0) {ดำเนินการต่อ; // ข้ามภาษาเฉพาะภาษา} system.out.print (สถานที่ [i] .getDisplayName ()); สวิตช์ (j) {กรณี 0: form = numberFormat.getInstance (สถานที่ [i]); หยุดพัก; กรณีที่ 1: form = numberFormat.getIntegerinstance (สถานที่ [i]); หยุดพัก; กรณีที่ 2: form = numberFormat.getCurrencyInstance (สถานที่ [i]); หยุดพัก; ค่าเริ่มต้น: form = numberFormat.getPercentInstance (สถานที่ [i]); หยุดพัก; } if (แบบฟอร์มอินสแตนซ์ของ decimalformat) {system.out.print (":" + ((decimalformat) ฟอร์ม) .topattern ()); } system.out.print (" ->" + form.format (myNumber)); ลอง {system.out.println (" ->" + form.parse (form.format (myNumber))); } catch (parseexception e) {}}}อ้างอิง: ที่อยู่เดิม
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น