تقوم طريقة numberFormat.getInstance () بإرجاع مثيل رقم numberFormat (في الواقع فئة فرعية محددة من NumberFormat ، مثل DecimalFormat) ، وهو مناسب لتنسيق رقم بناءً على الإعدادات المحلية. يمكنك أيضًا استخدام الإعدادات الإقليمية غير الافتراضية ، مثل ألمانيا. تقوم طريقة التنسيق ثم بتنظيم الأرقام وفقًا لقواعد إقليمية محددة. يمكن أيضًا استخدام هذا البرنامج في شكل بسيط:
NumberFormat.getInstance (). Format (1234.56)
لكن حفظ التنسيق ثم إعادة استخدامه أكثر كفاءة. التدويل يمثل مشكلة كبيرة عند تنسيق الأرقام.
آخر هو تحكم فعال في التنسيق ، مثل تحديد عدد الأرقام في الجزء الكسري. فيما يلي مثال بسيط لحل هذه المشكلة:
استيراد java.text.decimalformat ؛ استيراد java.util.locale ؛ الفئة العامة decimalformat2 {public static void main (String args []) {// الحصول على التنسيق الافتراضي المحلي decimalformat df1 = new decimalformat ("####. 000") ؛ system.out.println (df1.format (1234.56)) ؛ // الحصول على التنسيق الألماني locale.setDefault (locale.german) ؛ decimalformat df2 = new decimalformat ("####. في هذا المثال ، تم تعيين تنسيق الأرقام ، باستخدام رموز مثل "####. 000". هذا الوضع يعني أن هناك أربعة أرقام قبل النقطة العشرية. إذا لم يكن ذلك كافيًا ، فسيكون فارغًا. إذا كان هناك ثلاثة أرقام بعد النقطة العشرية ، فسيتم ملؤها بـ 0. إخراج البرنامج:
1234.560
1234،560
وبالمثل ، يمكن أيضًا التحكم في التنسيقات في شكل أسي ، على سبيل المثال:
استيراد java.text.decimalformat ؛ الفئة العامة decimalformat3 {public static void main (String args []) {decimalformat df = new decimalformat ("0.000E0000") ؛ system.out.println (df.format (1234.56)) ؛}} الإخراج:
1.235e0003
للنسب المئوية:
استيراد java.text.numberformat ؛ الطبقة العامة decimalformat4 {public static void main (string args []) {numberformat nf = numberformat.getpercentercenstance () ؛ system.out.println (nf.format (0.47)) ؛}}} الإخراج:
47 ٪
حتى الآن ، رأيت عدة تقنيات مختلفة لتنسيق أرقام. من ناحية أخرى ، كيف أقرأ وأجعل سلسلة تحتوي على أرقام منسقة؟ يتم تضمين دعم القرار في NumberFormat. على سبيل المثال:
استيراد java.util.locale ؛ استيراد java.text.numberformat ؛ استيراد java.text.parseException ؛ الفئة العامة decimalformat5 {public static void main (string args []) {// tormat numbatformat nf1 = numberformat.getInstance () ؛ كائن OBJ1 = فارغ ؛ // تحليل القائم على التنسيق جرب {obj1 = nf1.parse ("1234،56") ؛ } catch (parseException e1) {system.err.println (e1) ؛ } system.out.println (OBJ1) ؛ // numpat numberformatmat nf2 = numberformat.getInstance (locale.german) ؛ كائن OBJ2 = فارغ ؛ // تحليل القائم على التنسيق جرب {obj2 = nf2.parse ("1234،56") ؛ } catch (parseException e2) {system.err.println (e2) ؛ } system.out.println (OBJ2) ؛ }} ينقسم هذا المثال إلى جزأين ، وكلاهما يجرس سلسلة: "1234،56". يستخدم الجزء الأول التنسيق المحلي لتحليله ، في حين يستخدم الجزء الثاني التنسيق الألماني لتحليله. عندما يعمل البرنامج في الولايات المتحدة ، فإن النتيجة هي:
123456
1234.56
وبعبارة أخرى ، يعتبر "1234،56" عددًا صحيحًا كبيرًا في الولايات المتحدة "123456" وعشريًا في ألمانيا "1234.56".
اتصال العشر وتوصيل الرقم
في المثال أعلاه ، يتم استخدام كل من decimalformat و numberformat. غالبًا ما يتم استخدام DecimalFormat للحصول على التحكم الجيد في التنسيق ، بينما يتم استخدام NumberFormat في كثير من الأحيان لتحديد مناطق مختلفة عن المحلية. كيف تجمع بين فئتين؟
تدور الإجابة حول حقيقة أن DecimalFormat هي فئة فرعية من NumberFormat ، والتي يتم تحديد مثيلها كمنطقة محددة. لذلك ، يمكنك تحديد منطقة باستخدام numberformat.getInstance ثم إلقاء الهيكل على كائن DecimalFormat. يذكر الوثائق أنه يمكن تطبيق هذه التقنية في معظم الحالات ، ولكن تحتاج إلى استخدام كتلة Try/Catch لتطويق الممثلين في حالة عدم عمل التحويل بشكل صحيح (من المفترض أن تستخدم منطقة غريبة في مواقف غير مزعجة للغاية). إليك مثال مثل هذا:
استيراد java.text.decimalformat ؛ استيراد java.text.numberformat ؛ استيراد java.util.locale ؛ الفئة العامة decimalformat6 {public static void main (String args []) {decimalformat df = null ؛ // احصل على كائن numberFormat و // يلقي إلى كائن DecimalFormat ، حاول {df = (decimalformat) numberFormat.getInstance (locale.german) ؛ } catch (classcastException e) {system.err.println (e) ؛ } // SET FORMAT MODE DF.Applypattern ("####. 00000") ؛ // تنسيق الأرقام system.out.println (df.format (1234.56)) ؛ }} تحصل طريقة getInstance ()
1234،56000
إذا كنت لا تهتم بالتدويل ، فيمكنك استخدام DecimalFormat مباشرة.
عندما يكون V مزدوج غير مجهز ، فإن المقياس هو الدقة المطلوبة ، ويعيد مزدوج يتطلب رقمًا عشريًا.
الجولة المزدوجة الثابتة العامة (Double V ، int Scale) {if (Scale <0) {رمي جديد alficalArgumentException ("يجب أن يكون المقياس عددًا صحيحًا أو صفرًا") ؛ } bigdecimal b = new BigDecimal (double.toString (v)) ؛ BigDecimal One = New BigDecimal ("1") ؛ إرجاع B.Divide (واحد ، مقياس ، bigdecimal.round_half_up) .doublevalue () ؛ } ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.