| الدالة | الوظيفة | مثال |
|---|---|---|
| Math.round() | تقريب لأقرب صحيح | Math.round(4.5) → 5 |
| Math.floor() | تقريب للأسفل | Math.floor(4.9) → 4 |
| Math.ceil() | تقريب للأعلى | Math.ceil(4.1) → 5 |
| Math.random() | رقم عشوائي [0,1) | 0.734... |
| toFixed(n) | تقريب لمنازل عشرية محددة (كنص) | (3.14159).toFixed(2) → "3.14" |
جافاسكريبت تتعامل مع كل الأرقام (صحيحة وعشرية) بنوع بيانات واحد هو Number، المبني على معيار الفاصلة العائمة IEEE 754. هذا له تبعات مهمة يجب فهمها: بعض العمليات على الأعداد العشرية قد تُنتج نتائج غير دقيقة تماماً بسبب طريقة تمثيل الأعداد العشرية في الذاكرة، مثل أن 0.1 + 0.2 لا تساوي 0.3 تماماً في جافاسكريبت بل تُعطي نتيجة بها خطأ تقريب دقيق جداً.
كائن Number المدمج يوفر دوالاً مفيدة: Number.isInteger() للتحقق إن كان الرقم صحيحاً، Number.isNaN() للتحقق الدقيق من قيمة NaN (أدق من isNaN العامة التي تُحوّل النوع أولاً)، وtoFixed() لتقريب رقم عشري لعدد منازل عشرية محددة وإعادته كنص — مفيدة جداً في عرض الأسعار والعملات.
كائن Math المدمج يحتوي دوالاً وثوابت رياضية جاهزة: Math.round() للتقريب لأقرب عدد صحيح، Math.floor() للتقريب للأسفل دائماً، Math.ceil() للتقريب للأعلى دائماً، Math.abs() للقيمة المطلقة، Math.max() وMath.min() لأكبر وأصغر قيمة من قائمة، وMath.random() التي تُولّد رقماً عشوائياً عشرياً بين 0 (شاملاً) و1 (غير شامل).
لتوليد رقم صحيح عشوائي ضمن نطاق محدد (مثلاً بين 1 و100)، تُدمج Math.random() مع Math.floor() بمعادلة رياضية بسيطة — وهي نمط شائع جداً في الألعاب وأي سيناريو يحتاج عشوائية، مثل اختيار عنصر عشوائي من مصفوفة أو محاكاة رمي نرد.
| 1 | Math.round(4.6); // 5 |
| 2 | Math.floor(4.9); // 4 |
| 3 | Math.ceil(4.1); // 5 |
| 4 | Math.abs(-7); // 7 |
| 5 | Math.max(3, 9, 1); // 9 |
| 6 | Math.random(); // رقم عشوائي بين 0 و 1 |
| 7 | |
| 8 | (3.14159).toFixed(2); // "3.14" (نص) |
مثال 1: توليد أرقام عشوائية ضمن نطاق
| 1 | // توليد رقم صحيح عشوائي بين حدين (شامل الحدين) |
| 2 | function رقم_عشوائي(الأدنى, الأعلى) { |
| 3 | return Math.floor(Math.random() * (الأعلى - الأدنى + 1)) + الأدنى; |
| 4 | } |
| 5 | console.log(رقم_عشوائي(1, 6)); // محاكاة رمي نرد: رقم بين 1 و 6 |
مثال 2: مشكلة دقة الفاصلة العائمة وحلها
| 1 | // مشكلة دقة الأعداد العشرية الشهيرة |
| 2 | console.log(0.1 + 0.2); // 0.30000000000000004 (خطأ تقريب!) |
| 3 | console.log((0.1 + 0.2).toFixed(2)); // "0.30" (حل عملي للعرض) |
| 4 | |
| 5 | console.log(Number.isInteger(5)); // true |
| 6 | console.log(Number.isInteger(5.5)); // false |