كيف تقوم بتنسيق الأرقام بالترميز العلمي؟

تعلم كيفية عرض الأرقام الكبيرة جداً والصغيرة جداً في JavaScript

مقدمة

يعبر الترميز العلمي عن الأرقام كمعامل مضروب في قوة من 10. على سبيل المثال، يصبح 123,000,000 هو 1.23 × 10^8، ويصبح 0.000000456 هو 4.56 × 10^-7. يجعل هذا التنسيق الأرقام الكبيرة جداً والصغيرة جداً أسهل في القراءة والمقارنة.

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

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

تنسيق الأرقام بالترميز العلمي

يقبل منشئ Intl.NumberFormat خيار notation الذي يتحكم في كيفية عرض الأرقام. يؤدي تعيين notation إلى "scientific" إلى تنسيق الأرقام بالترميز العلمي.

const formatter = new Intl.NumberFormat('en-US', {
  notation: 'scientific'
});

console.log(formatter.format(987654321));
// Output: 9.877E8

يمثل الناتج 9.877E8 الرقم 9.877 × 10^8. يفصل E المعامل عن الأس.

تنسيق الأرقام الكبيرة جداً

يبسط الترميز العلمي عرض الأرقام الكبيرة جداً من خلال التعبير عنها كمعامل وأس.

const formatter = new Intl.NumberFormat('en-US', {
  notation: 'scientific'
});

console.log(formatter.format(6.02214076e23));
// Output: 6.022E23

console.log(formatter.format(299792458));
// Output: 2.998E8

console.log(formatter.format(7800000000));
// Output: 7.8E9

يتم تنسيق الرقم 6.02214076e23 (ثابت أفوجادرو) كـ 6.022E23، مما يجعله أسهل في القراءة من 602,214,076,000,000,000,000,000.

تنسيق الأرقام الصغيرة جداً

يعمل الترميز العلمي أيضاً مع الأرقام الصغيرة جداً، باستخدام الأسس السالبة لتمثيل القيم الأقل من 1.

const formatter = new Intl.NumberFormat('en-US', {
  notation: 'scientific'
});

console.log(formatter.format(0.000000001));
// Output: 1E-9

console.log(formatter.format(0.00000000000000000016));
// Output: 1.6E-19

console.log(formatter.format(0.0000000456));
// Output: 4.56E-8

يتم تنسيق الرقم 0.00000000000000000016 (الشحنة التقريبية للإلكترون بالكولوم) كـ 1.6E-19، مما يتجنب الحاجة إلى عد الأصفار.

تنسيق الترميز العلمي يختلف حسب اللغة

تستخدم اللغات المختلفة فواصل عشرية مختلفة في الترميز العلمي. بينما يبقى فاصل الأس E في معظم اللغات ذات الأساس اللاتيني، يتبع الفاصل العشري في المعامل اصطلاحات اللغة المحلية.

const numberToFormat = 987654321;

// US English uses a period as the decimal separator
const usFormatter = new Intl.NumberFormat('en-US', {
  notation: 'scientific'
});
console.log(usFormatter.format(numberToFormat));
// Output: 9.877E8

// Portuguese uses a comma as the decimal separator
const ptFormatter = new Intl.NumberFormat('pt-PT', {
  notation: 'scientific'
});
console.log(ptFormatter.format(numberToFormat));
// Output: 9,877E8

// German also uses a comma as the decimal separator
const deFormatter = new Intl.NumberFormat('de-DE', {
  notation: 'scientific'
});
console.log(deFormatter.format(numberToFormat));
// Output: 9,877E8

تنتج اللغة الإنجليزية الأمريكية 9.877E8 بنقطة، بينما تنتج اللغات البرتغالية والألمانية 9,877E8 بفاصلة.

التحكم في الدقة في الترميز العلمي

يتحكم الخياران minimumSignificantDigits و maximumSignificantDigits في عدد الأرقام التي تظهر في الناتج المنسق. تتضمن الأرقام المعنوية جميع الأرقام في المعامل، من أول رقم غير صفري إلى آخر رقم.

const formatter = new Intl.NumberFormat('en-US', {
  notation: 'scientific',
  minimumSignificantDigits: 3,
  maximumSignificantDigits: 3
});

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

console.log(formatter.format(0.00045678));
// Output: 4.57E-4

يؤدي تعيين كلا الخيارين إلى 3 إلى تقييد الناتج بثلاثة أرقام معنوية بالضبط. بدون هذه الخيارات، يتضمن المنسق المزيد من الأرقام من العدد الأصلي.

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

const formatter = new Intl.NumberFormat('en-US', {
  notation: 'scientific',
  minimumSignificantDigits: 2,
  maximumSignificantDigits: 5
});

console.log(formatter.format(123456789));
// Output: 1.2346E8

console.log(formatter.format(100000000));
// Output: 1.0E8

يسمح هذا التكوين بما بين 2 و 5 أرقام معنوية، اعتمادًا على العدد المدخل.

تنسيق الأعداد في الترميز الهندسي

الترميز الهندسي هو نوع من الترميز العلمي حيث يكون الأس دائمًا من مضاعفات 3. يتماشى هذا مع بادئات النظام الدولي للوحدات مثل كيلو (10^3) وميجا (10^6) وجيجا (10^9).

const formatter = new Intl.NumberFormat('en-US', {
  notation: 'engineering'
});

console.log(formatter.format(987654321));
// Output: 987.654E6

console.log(formatter.format(0.000000456));
// Output: 456E-9

يتم تنسيق العدد 987,654,321 كـ 987.654E6 في الترميز الهندسي، مقارنة بـ 9.877E8 في الترميز العلمي. الأس 6 هو من مضاعفات 3.

الفروق بين الترميز العلمي والترميز الهندسي

الفرق الرئيسي بين الترميز العلمي والترميز الهندسي هو كيفية اختيار الأس. يستخدم الترميز العلمي أي أس صحيح، بينما يقيد الترميز الهندسي الأسس بمضاعفات 3.

const scientificFormatter = new Intl.NumberFormat('en-US', {
  notation: 'scientific'
});

const engineeringFormatter = new Intl.NumberFormat('en-US', {
  notation: 'engineering'
});

const testNumbers = [105900, 1234567, 0.00045];

testNumbers.forEach(num => {
  console.log(`Number: ${num}`);
  console.log(`Scientific: ${scientificFormatter.format(num)}`);
  console.log(`Engineering: ${engineeringFormatter.format(num)}`);
  console.log('---');
});

// Output:
// Number: 105900
// Scientific: 1.059E5
// Engineering: 105.9E3
// ---
// Number: 1234567
// Scientific: 1.235E6
// Engineering: 1.235E6
// ---
// Number: 0.00045
// Scientific: 4.5E-4
// Engineering: 450E-6
// ---

بالنسبة للعدد 105,900، ينتج الترميز العلمي 1.059E5 بينما ينتج الترميز الهندسي 105.9E3. عندما يستخدم الترميز العلمي بالفعل مضاعفًا للعدد 3 (كما هو الحال مع 1,234,567 الذي ينتج 1.235E6)، ينتج كلا الترميزين نفس النتيجة.

حالات الاستخدام للترميز العلمي والهندسي

يعمل الترميز العلمي بشكل جيد للتطبيقات التي تعرض البيانات حيث تكون سهولة القراءة والاتساق أكثر أهمية من التوافق مع البادئات المترية.

استخدم الترميز العلمي في:

  • الآلات الحاسبة العلمية وأدوات الحساب
  • تطبيقات علم الفلك (المسافات، الكتل، اللمعان)
  • تطبيقات الكيمياء (الكتل الجزيئية، التراكيز)
  • محاكاة الفيزياء (كتل الجسيمات، القيم الكهرومغناطيسية)

يعمل الترميز الهندسي بشكل جيد للتطبيقات التي يفكر فيها المستخدمون من حيث البادئات المترية أو يحتاجون إلى توصيل القيم شفهيًا.

استخدم الترميز الهندسي في:

  • تطبيقات الإلكترونيات (المقاومات بالكيلو أوم، السعات بالبيكو فاراد)
  • أدوات الهندسة الكهربائية (الفولتيات، التيارات، القدرات)
  • أنظمة الاتصالات (الترددات بالميجاهرتز، معدلات البيانات بالجيجابت)
  • الهندسة الميكانيكية (القوى بالكيلو نيوتن، عزوم الدوران بنيوتن-متر)

يعتمد الاختيار على المستخدمين والمجال الخاص بك. يوفر الترميز العلمي تنسيقًا متسقًا عبر جميع الأرقام، بينما يتوافق الترميز الهندسي مع كيفية توصيل المهندسين للقياسات.