كيف تقوم بإزالة الأصفار التابعة بعد الفاصلة العشرية؟

تحكم في متى تُعرض الأرقام مع أو بدون أصفار تابعة باستخدام خيارات أرقام الكسور.

مقدمة

عند تنسيق الأرقام، بعض القيم تحتوي بشكل طبيعي على أصفار تابعة بعد الفاصلة العشرية. قد يظهر الرقم 1.5 على شكل 1.50، أو قد يظهر الرقم 3 على شكل 3.00. هذه الأصفار التابعة قد تكون منطقية للأسعار حيث ترغب في إظهار السنتات بشكل متسق، لكنها تبدو غير ضرورية عند عرض الإحصائيات أو القياسات.

توفر واجهة Intl.NumberFormat في جافا سكريبت تحكمًا في ظهور الأصفار التابعة. يمكنك تكوين المنسق لإزالتها، أو الاحتفاظ بها، أو تطبيق قواعد مختلفة حسب احتياجاتك.

ما هي الأصفار التابعة

الأصفار التابعة هي أصفار تظهر في نهاية الرقم بعد الفاصلة العشرية. وهي لا تغير القيمة الرياضية للرقم، لكنها تؤثر على شكل الرقم عند عرضه.

// هذه الأرقام لها نفس القيمة ولكن بأصفار تابعة مختلفة
1.5   // بدون أصفار تابعة
1.50  // صفر تابع واحد
1.500 // صفران تابعان

تظهر الأصفار التابعة عندما تحدد عدد المنازل العشرية المراد عرضها. إذا كان الرقم يحتوي على أرقام معنوية أقل من عدد المنازل العشرية التي حددتها، يضيف المنسق أصفارًا لملء المواضع المتبقية.

كيف تعرض Intl.NumberFormat الأرقام العشرية افتراضيًا

افتراضيًا، تعرض Intl.NumberFormat حتى 3 منازل عشرية وتزيل الأصفار التابعة. هذا يعني أن معظم الأرقام تظهر بدون أصفار غير ضرورية.

const formatter = new Intl.NumberFormat("en-US");

console.log(formatter.format(1.5));
// الناتج: "1.5"

console.log(formatter.format(1.50));
// الناتج: "1.5"

console.log(formatter.format(1.123456));
// الناتج: "1.123"

يعامل المنسق 1.5 و1.50 كقيمة واحدة ويعرضهما بشكل متطابق. الأرقام التي تحتوي على أكثر من 3 منازل عشرية يتم تقريبها إلى 3 أرقام.

تعيين الحد الأدنى والأقصى للأرقام العشرية

تتحكم خيارات minimumFractionDigits وmaximumFractionDigits في عدد الأرقام التي تظهر بعد الفاصلة العشرية. يعمل هذان الخياران معًا لتحديد ما إذا كانت الأصفار النهائية ستظهر أم لا.

const formatter = new Intl.NumberFormat("en-US", {
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
});

console.log(formatter.format(1.5));
// Output: "1.50"

console.log(formatter.format(1));
// Output: "1.00"

console.log(formatter.format(1.234));
// Output: "1.23"

عندما يتم تعيين minimumFractionDigits وmaximumFractionDigits إلى نفس القيمة، فإن كل رقم يظهر بالضبط بهذا العدد من المنازل العشرية. الأرقام ذات الأرقام الأقل تضاف إليها أصفار نهائية، والأرقام ذات الأرقام الأكثر يتم تقريبها.

إزالة الأصفار النهائية

لإزالة الأصفار النهائية، قم بتعيين minimumFractionDigits إلى 0 وmaximumFractionDigits إلى الحد الأقصى لعدد المنازل العشرية التي تريد السماح بها. يخبر هذا التكوين المنسق بعرض ما بين 0 وN من المنازل العشرية، باستخدام فقط العدد المطلوب منها.

const formatter = new Intl.NumberFormat("en-US", {
  minimumFractionDigits: 0,
  maximumFractionDigits: 2
});

console.log(formatter.format(1));
// Output: "1"

console.log(formatter.format(1.5));
// Output: "1.5"

console.log(formatter.format(1.50));
// Output: "1.5"

console.log(formatter.format(1.23));
// Output: "1.23"

يعرض المنسق الأرقام الصحيحة بدون فاصلة عشرية، والأرقام ذات منزلة عشرية واحدة كما هي، ويزيل أي أصفار نهائية كانت ستظهر. لا تزال الأرقام تُقرب إلى الحد الأقصى من المنازل العشرية إذا تجاوزته.

تعيين حد أدنى أكبر من الصفر

يمكنك تعيين minimumFractionDigits إلى قيمة أكبر من الصفر مع السماح بإزالة الأصفار النهائية. هذا يضمن ظهور بعض المنازل العشرية على الأقل دائمًا، مع إزالة الأصفار التي تتجاوز ذلك الحد الأدنى.

const formatter = new Intl.NumberFormat("en-US", {
  minimumFractionDigits: 1,
  maximumFractionDigits: 3
});

console.log(formatter.format(1));
// Output: "1.0"

console.log(formatter.format(1.5));
// Output: "1.5"

console.log(formatter.format(1.50));
// Output: "1.5"

console.log(formatter.format(1.234));
// Output: "1.234"

console.log(formatter.format(1.2345));
// Output: "1.235"

يظهر الرقم 1 كـ 1.0 لأن الحد الأدنى هو منزلة عشرية واحدة. يظهر الرقم 1.5 كما هو. تتم إزالة الصفر النهائي من الرقم 1.50. يتم تقريب الأرقام ذات أكثر من 3 منازل عشرية إلى 3.

متى تحتفظ بالأصفار اللاحقة

احتفظ بالأصفار اللاحقة عندما تحتاج إلى إظهار دقة متسقة عبر جميع الأرقام. هذا شائع للأسعار والمبالغ المالية والقياسات حيث يحمل عدد المنازل العشرية معنى.

// يجب أن تظهر الأسعار بمنازل عشرية متسقة
const priceFormatter = new Intl.NumberFormat("en-US", {
  style: "currency",
  currency: "USD",
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
});

console.log(priceFormatter.format(5));
// Output: "$5.00"

console.log(priceFormatter.format(5.5));
// Output: "$5.50"

تستخدم منسقات العملات هذا النهج بشكل افتراضي. يتم عرض كلا المبلغين بمنزلتين عشريتين بالضبط، مما يجعلهما سهلي المقارنة ويؤكد أنهما قيم نقدية.

متى تزيل الأصفار اللاحقة

قم بإزالة الأصفار اللاحقة عند عرض الإحصائيات أو النسب المئوية أو القياسات أو أي قيمة لا تضيف فيها الأصفار اللاحقة أي معلومات. هذا ينتج مخرجات أنظف وأكثر قابلية للقراءة.

// تبدو الإحصائيات أنظف بدون أصفار لاحقة
const statsFormatter = new Intl.NumberFormat("en-US", {
  minimumFractionDigits: 0,
  maximumFractionDigits: 2
});

console.log(`Average: ${statsFormatter.format(3.5)} items`);
// Output: "Average: 3.5 items"

console.log(`Total: ${statsFormatter.format(100)} items`);
// Output: "Total: 100 items"

// النسب المئوية غالبًا ما تعمل بشكل أفضل بدون أصفار لاحقة
const percentFormatter = new Intl.NumberFormat("en-US", {
  style: "percent",
  minimumFractionDigits: 0,
  maximumFractionDigits: 1
});

console.log(percentFormatter.format(0.75));
// Output: "75%"

console.log(percentFormatter.format(0.755));
// Output: "75.5%"

تعرض الإحصائيات والنسب المئوية المنازل العشرية التي تحتاجها فقط. تظهر الأعداد الصحيحة بدون نقاط عشرية، والأرقام ذات الأرقام العشرية المهمة تظهر بدون أصفار لاحقة غير ضرورية.

كيف تؤثر اللغة المحلية على عرض الأرقام العشرية

يختلف موضع النقطة العشرية وأحرف تجميع الأرقام حسب اللغة المحلية، لكن قواعد الأصفار اللاحقة تعمل بنفس الطريقة عبر جميع اللغات المحلية. خيارات minimumFractionDigits وmaximumFractionDigits لها نفس التأثير بغض النظر عن اللغة المحلية التي تستخدمها.

const formatterEN = new Intl.NumberFormat("en-US", {
  minimumFractionDigits: 0,
  maximumFractionDigits: 2
});

const formatterDE = new Intl.NumberFormat("de-DE", {
  minimumFractionDigits: 0,
  maximumFractionDigits: 2
});

console.log(formatterEN.format(1234.5));
// Output: "1,234.5"

console.log(formatterDE.format(1234.5));
// Output: "1.234,5"

كلا المنسقين يزيلان الأصفار اللاحقة ويعرضان الرقم بمنزلة عشرية واحدة. الفرق هو أن تنسيق اللغة الإنجليزية الأمريكية يستخدم نقطة للفاصل العشري وفواصل لفواصل الآلاف، بينما يستخدم التنسيق الألماني الاتفاقية المعاكسة.