التعامل مع الأعداد في لغة JavaScript


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

1. الأعداد في جافاسكريبت: كلها أرقام عشرية!

أول شيء لازم تعرفه، في جافاسكريبت ما فيه فرق بين الأعداد الصحيحة (integers) والأعداد العشرية (floats). كل الأرقام تعتبر أرقام عشرية (double-precision floating-point numbers). يعني لما تكتب 5، هو فعلياً 5.0.

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

2. العمليات الحسابية الأساسية

نفس أي لغة ثانية، عندك الجمع +، الطرح -، الضرب *، والقسمة /. وفيه بعد معامل الباقي (Modulo) اللي هو %.

let a = 10;
let b = 3;

console.log(a + b); // 13
console.log(a - b); // 7
console.log(a * b); // 30
console.log(a / b); // 3.3333333333333335
console.log(a % b); // 1 (الباقي من قسمة 10 على 3 هو 1)

3. أرقام خاصة: NaN و Infinity

جافاسكريبت عندها قيمتين رقميتين خاصتين ممكن تشوفها:

  • NaN (Not-a-Number): تطلع لك لما تحاول تسوي عملية حسابية غير صالحة. مثلاً، تقسم صفر على صفر أو تحاول تضرب نص برقم.
  • Infinity و -Infinity: تطلع لما يكون الرقم كبير جداً (أو صغير جداً) لدرجة ما تقدر جافاسكريبت تتعامل معه، أو لما تقسم رقم على صفر.
console.log(0 / 0);      // NaN
console.log("hello" * 5); // NaN
console.log(1 / 0);      // Infinity
console.log(-1 / 0);     // -Infinity

مهم: عشان تتأكد إذا القيمة NaN، استخدم الدالة Number.isNaN() أو isNaN() القديمة. لا تقارن مباشرة بـ NaN لأن NaN === NaN دائمًا تعطي false!

console.log(NaN === NaN);          // false
console.log(Number.isNaN(0 / 0));  // true
console.log(isNaN("hello" * 5));   // true (الدالة القديمة ممكن تكون أقل دقة أحياناً)

4. تحويل النصوص إلى أرقام

كثير نحتاج نحول النصوص اللي فيها أرقام إلى أرقام حقيقية عشان نقدر نسوي عليها عمليات حسابية. عندك دوال زي parseInt() و parseFloat().

  • parseInt(): تحول النص إلى عدد صحيح. تتوقف عند أول حرف غير رقمي.
  • parseFloat(): تحول النص إلى عدد عشري. تتعرف على النقطة العشرية.
let str1 = "100";
let str2 = "100.50 ريال";
let str3 = "  -25.75  ";
let str4 = "ألف 123";

console.log(parseInt(str1));      // 100
console.log(parseFloat(str1));    // 100

console.log(parseInt(str2));      // 100
console.log(parseFloat(str2));    // 100.5

console.log(parseInt(str3));      // -25
console.log(parseFloat(str3));    // -25.75

console.log(parseInt(str4));      // NaN (تبدأ بحرف غير رقمي)

نصيحة: دائماً استخدم معامل radix مع parseInt() عشان تتجنب مشاكل التحويل، مثلاً parseInt("010", 10).

5. تنسيق الأرقام

عندك طرق عشان تتحكم في طريقة عرض الأرقام العشرية:

  • toFixed(digits): ترجع لك الرقم كنص بعدد معين من الخانات العشرية. بتسوي تقريب.
  • toPrecision(precision): ترجع لك الرقم كنص بعدد معين من الأرقام الإجمالية (قبل وبعد الفاصلة).
let num = 123.45678;

console.log(num.toFixed(2));    // "123.46" (يُقرّب)
console.log(num.toFixed(0));    // "123"
console.log(num.toPrecision(5)); // "123.46" (5 أرقام إجمالية)
console.log(num.toPrecision(3)); // "123"

6. كائن Math

جافاسكريبت توفر لك كائن Math فيه دوال مفيدة للعمليات الرياضية المعقدة أو التقريب:

  • Math.round(): تقرب لأقرب عدد صحيح.
  • Math.floor(): تقرب للأقل (لأسفل).
  • Math.ceil(): تقرب للأعلى (لأعلى).
  • Math.random(): تولد رقم عشري عشوائي بين 0 (شامل) و 1 (غير شامل).
  • Math.max() و Math.min(): تجيب أكبر أو أصغر قيمة من مجموعة أرقام.
  • Math.abs(): القيمة المطلقة (تحول السالب إلى موجب).
console.log(Math.round(4.7));  // 5
console.log(Math.round(4.3));  // 4
console.log(Math.floor(4.9));  // 4
console.log(Math.ceil(4.1));   // 5
console.log(Math.random());    // رقم عشوائي بين 0 و 1
console.log(Math.max(10, 20, 5)); // 20
console.log(Math.min(10, 20, 5)); // 5
console.log(Math.abs(-7));     // 7

وبكذا نكون غطينا أهم الأشياء اللي تحتاجها عشان تتعامل مع الأرقام في جافاسكريبت. تذكر دائمًا إن الممارسة هي مفتاح الإتقان. بالتوفيق!