Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

جافاسكربتالتعامل مع الأعداد

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

مفهوم الأعداد في جافاسكربت

الأعداد على اختلاف أشكالها تندرج تحت نوع واحد في جافاسكربت و الذي هو النوع number.
كيف سيتم التعامل مع الأعداد و كيف سيتم تحويلها هو أمر أنت تحدده من خلال الدوال الجاهزة التي توفرها لك.

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

في لغات البرمجة الأخرى غالباً ما نجد أنواع الأعداد يتم تعريفها بدقة أكثر، حيث يتم تعريفها من البداية كأعداد صحيحة ( Integer أعداد عشرية ( Float ) إلخ.. و على هذا الأساس يتم التعامل به معها و لكن الأمر مختلف في جافاسكربت و هو أكثر سهولة و مرونة.

تعريف أعداد في جافاسكربت

العدد في جافاسكربت مهما كان نوعه يتم تخزينه في ذاكرة الجهاز مهما كان نوعه بمساحة ثابتة و هي 64 bit.

مفسّر لغة جافاسكربت يخزّن العدد في الذاكرة بمبدأ يسمى Double Precision Floating Point و هذه المعلومة ذكرناها لك فقط حتى تعلم أنه يوجد قواعد و حدود قصوى للأعداد التي يمكنك تخزينها و هذه الأمور سنتطرق لما تحتاجه منها من خلال الأمثلة.

الكثير من المبرمجين يعتقدون أن لغة جافاسكربت سيئة في التعامل مع الأرقام و ذلك لعدم معرفتهم بكيفية تعامل جافاسكربت معها، لذلك نتمنى منك قراءة الملاحظات التي وضعناها على الأمثلة جيداً.


في المثال التالي قمنا بتعريف عددي صحيح ( Integer ) و عدد عشري ( Decimal ).

المثال الأول

let x = 3;   // (integer number) عدد صحيح
let y = 7.5; // (floating-point number) عدد عشري
جرب الكود

الأعداد الكبيرة في جافاسكربت يمكن كتابتها بأسلوب الأُس ( Exponential Notation )من خلال وضع الحرف e في أولها.

في المثال التالي قمنا باستخدام أسلوب الأُس لكتابة الأعداد بشكل أبسط.

المثال الثاني

let x = 123e4;  // 123e4 = 123 × 10000 = 1230000
let y = 123e+4; // 123e+4 = 123 × 10000 = 1230000
let z = 123e-4; // 123e-4 = 123 × -10000 = 0.0123
جرب الكود

في المثال التالي قمنا بتعريف عدد سداسي عشري ( Hexadecimal ) وذلك من خلال كتابة 0x في أول العدد.

المثال الثالث

let x = 0xff; // 0xff = 240 + 15 = 255
جرب الكود

لا تحتاج معرفة كيف يتم كتابة الأعداد بأسلوب Hexadecimal لأنك لن تحتاجها إلا إذا كنت تبني برنامج خاص بالأنظمة و الشبكات أو الألوان. كما يمكنك استخدام أداة تحويل الوحدات لمعرفة ما هو العدد الصحيح الذي يساويه أي عدد مكتوب بهذا الأسلوب.

حدود الأعداد في جافاسكربت

العدد صحيح إن كان سيتم كتابته بشكل كامل فإنه يمكن أن يتألف من 15 رقم كحد أقصى.

  • في المثال التالي قيمة x ستبقى كما هي لأنها لم تتجاوز 15 رقماً.
  • أما قيمة y فإنها ستتغير لأنها تتألف من 16 رقم، أي جاوزت الحد الأقصى للعدد الصحيح.

المثال الأول

let x = 999999999999999;  // x = 999999999999999
let y = 9999999999999999; // y = 10000000000000000
جرب الكود

في حال كان العدد عشري، فإنه يمكن أن يحتوي 17 عدد كحد أقصى بعد الفاصلة (أي جهة اليمين).

و هنا نود الإشارة أيضاً أنه عند التعامل مع أعداد عشرية قد تكون النتائج غير منطقية رياضياً كما هو المعلوم و ذلك بسبب المبدأ Double Precision Floating Point الذي تستخدمه جافاسكربت في تخزين الأعداد و إليك المثال التالي.

المثال الثاني

let x = 0.1 + 0.2; // x = 0.30000000000000004
جرب الكود

كحل للمشكلة السابقة يمكنك ضرب كلا العددين بعشرة حتى يصبحا عددين صحيحين، و من ثم تقوم بقسمة الناتج على عشرة.

المثال الثالث

let x = (0.1*10 + 0.2*10) / 10;
جرب الكود

كحل آخر للمشكلة السابقة يمكنك استخدام الدالة toFixed() لتحديد كم رقم تريد أن يظهر بعد الفاصلة.

المثال الرابع

let x = (0.1 + 0.2).toFixed(1);
جرب الكود

دمج الأعداد و النصوص في جافاسكربت

مفسّر لغة جافاسكربت ينفّذ الأوامر الموضوعة واحداً تلو الآخر و عند تنفيذ أي أمر فإنه يبدأ من اليسار إلى اليمين. بالإضافة إلى ذلك فإن الرمز + يستخدم في العمليات الحسابية كعامل جمع، و مع النصوص كعامل دمج.


في المثال التالي قمنا بعرض بعرض أعداد و نصوص. لاحظ أنه طالما أن مفسّر جافاسكربت يرى أعداداً في البداية فإنه يتصرف كعامل جمع، و لكنه بمجرد أن يرى نصاً واحداً فإنه سيكمل التصرّف كعامل دمج مما يعني أنه سيضعهم بجانب بعضهم فقط.

المثال الأول

let a = 20 + 30;         // 50
let b = 20 + '30';       // 2030
let c = 20 + 30 + '40';  // 5040
let d = '20' + 30 + 40;  // 203040
let e = 20 + '30' + 40;  // 203040
جرب الكود

في المثال التالي قمنا بعرض ناتج عمليات حسابية مع أننا قمنا بوضعها بعد النصوص. لاحظ أنه في حال كانت الأعداد المراد وضع ناتج حسابها موضوعة بعد نص، فهنا يجب وضعها بين قوسين () لإعلام مفسّر جافاسكربت أنه يجب حساب ناتجها و ليس وضعها بجانب البعض.

المثال الثاني

let a = '5 + 2 = ' + (5+2);  // 5 + 2 = 7
let b = '5 - 2 = ' + (5-2);  // 5 - 2 = 3
let c = '5 * 2 = ' + (5*2);  // 5 * 2 = 10
let d = '5 / 2 = ' + (5/2);  // 5 / 2 = 2.5
جرب الكود

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

المثال الثالث

let a = '10' + '2';  // 102 <= هنا حصل دمج
let b = '10' - '2';  // 8
let c = '10' * '5';  // 50
let d = '10' / '5';  // 2
جرب الكود

مفهوم القيمة NaN

في المثال التالي قمنا بإجراء عمليات حسابية ليس فيها أي منطق. لاحظ أن مترجم جافاسكربت في حال وجد أن العملية الحسابية المراد تنفيذها غير ممكنة فإنه يعطيك NaN كناتج لهذه العملية.

المثال الرابع

let x = 10 - 'Harmash';  // NaN
جرب الكود

الكلمة NaN هي اختصار لعبارة Not A Number و التي تعني أن الناتج على العملية الحسابية ليس عدداً يمكن تمثيله.


الطريقة الصحيحة لفحص القيمة NaN

في حال قمت بفحص نوع المتغير بواسطة العامل typeof و كان هذا المتغير يحتوي على NaN كقيمة، فإن نوع المتغير سيكون number.
أما لو أردت فحص قيمة المتغير لتعرف ما إن كان يمكن تمثيلها أو التعامل معها كعدد، فهنا يجب أن تفحصها بواسطة الدالة NaN المخصصة لذلك.

المثال الخامس

let x = 10 - 'Harmash';    // NaN

document.write(typeof x);  // number => هكذا نعلم أنها في الأصل تمثل جواب لعملية حسابية
document.write(isNaN(x));  // true   => هكذا نعلم أنها قيمة عددية لا يمكن تمثيلها
جرب الكود

مفهوم القيمة Infinity

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

المثال السادس

let x = 1e1000;   // Infinity
let y = -1e1000;  // -Infinity
جرب الكود

الكلمة Infinity يقصد بها رمز اللانهاية في مادة الرياضيات.

ثوابت و دوال الأعداد في جافاسكربت

جافاسكربت توفر لك الكثير من الدوال الجاهزة التي يمكنك استخدامها للتعامل مع الأعداد، تحويل أنواعها، إجراء عمليات حسابية عليها و غيرها. هذه الدوال منها ما يمكن استخدامه بشكل مباشر، منها ما هو موجود ضمن الكلاس Math، و منها ما موجود ضمن الكلاس Number.

يكفي فقط أن تعرف أن الثوابت و الدوال التي سنذكرناها متوفرة لتستخدمها عند الحاجة لها مستقبلاً لأنه من الطبيعي جداً أن لا تعرف فائدة جميع ما قمنا بذكره في عالم البرمجة حيث أن أغلبها في الأصل يُستعمل في الغالب في العمليات الحسابية المعقدة التي تُدرَّس في الرياضيات و الفيزياء، لذلك على الأرجح قد لا تستخدم أغلب الثوابت و الدوال المذكورة في المشاريع البرمجية.


دوال يمكن استدعاءها بشكل مباشر

الجدول التالي يحتوي على جميع الدوال الجاهزة التي يمكنك استدعاءها من القيم العددية بشكل مباشر.

الدالة و تعريفها
1 toString() ترجع نسخة من العدد الذي قام باستدعائها كنص.
مثال عنها
2 toLocaleString(locales, options) ترجع نسخة من العدد الذي قام باستدعائها كنص بلغة و شكل محدد.
locales هو باراميتر إختياري، مكانه يمكن تمرير نص يمثل اللغة التي سيتم تحويل العدد إليها (مثل العربية، الف.
options هو باراميتر إختياري، مكانه يمكن تمرير كائن يحدد ما الذي يمثله هذا الرقم (مثل عملة، وزن، وحدة قياس إلخ..).
مثال عنها
3 valueOf() ترجع القيمة العددية الموجودة في الكائن الذي قام باستدعائها.
فمثلاً في حال كنت ستستخدمها مع التاريخ، فإنها سترجع لك عدد يمثّل عدد الثواني الموجودة من تاريخ 1970/01/01 و حتى التاريخ الذي قام باستدعائها.
مثال عنها
4 toFixed(digits) ترجع نسخة من العدد الذي قام باستدعائها عدد الأرقام الموضوعة فيه بعد الفاصلة يكون ثابت.
digits هو باراميتر إختياري، مكانه يمكن تمرير عدد يمثّل كم رقم سيتم إبقاؤه بعد الفاصلة.
في حال عدم تمرير قيمة مكانه فإنه سيتم حذف أي رقم موجود بعد الفاصلة.
مثال عنها
5 toPrecision(precision) ترجع نسخة من العدد الذي قام باستدعائها كنص مع تحديد عدد الأرقام التي سيتألف منها.
precision هو باراميتر إختياري، مكانه يمكن تمرير عدد يمثّل كم رقم سيتم إبقاؤه في العدد.
في حال عدم تمرير قيمة مكانه فإنه سيتم إبقاء 100 رقم منه كحد أقصى.
مثال عنها
6 toExponential(fractionDigits) ترجع نسخة من العدد الذي قام باستدعائها كنص مع تحديد عدد الأرقام التي سيتألف منها، تقريب العدد (الموجود بعد الفاصلة) و إرجاعه على شكل Exponential.
fractionDigits هو باراميتر إختياري، مكانه يمكن تمرير عدد يمثّل كم رقم سيتم إبقاؤه في العدد.
في حال عدم تمرير قيمة مكانه فإنه سيتم إبقاء 100 رقم منه كحد أقصى.
مثال عنها

دوال الكلاس Number

الجدول التالي يحتوي على جميع الدوال الجاهزة الموجودة في الكلاس Number.

الدالة و تعريفها
1 Number.isFinite(val) تستخدم لمعرفة ما إن كان العدد الذي نمرره لها مكان الباراميتر val هو عدد لا نهائي ( أي قيمته Infinite ) أم لا.
  • ترجع true في حال كانت قيمته عبارة عن عدد محدد.
  • ترجع false في حال كانت قيمته عبارة عن عدد لا نهائي Infinite.
مثال عنها
2 Number.isInteger(val) تستخدم لمعرفة ما إن كان العدد الذي نمرره لها مكان الباراميتر val هو عدد صحيح أم لا.
  • ترجع true في حال كانت قيمته عبارة عن عدد صحيح.
  • ترجع false في حال كانت قيمته ليست كذلك.
مثال عنها
3 Number.isNaN(val) تستخدم لمعرفة ما إن كانت القيمة التي نمررها لها مكان الباراميتر val تساوي NaN أم لا.
  • ترجع true في حال كانت قيمته تساوي NaN.
  • ترجع false في حال كانت قيمته ليست كذلك.
مثال عنها
4 Number.isSafeInteger(val) تستخدم لمعرفة ما إن كان العدد الذي نمرره لها مكان الباراميتر val هو عدد صحيح آمن أم لا.
العدد الصحيح يُعتبر عدد آمن طالما أنه يمكن تخزينه في الذاكرة، إذاً يعتبر آمن إذا كانت قيمته ما بين -(253-1) و 253-1 كحد أقصى.
  • ترجع true في حال كان عبارة عن عدد صحيح آمن.
  • ترجع false في حال كانت قيمته ليست كذلك.
مثال عنها
5 Number.parseInt(string, radix) تستخدم لإرجاع قيمة النص الذي نمرره لها مكان المتغير string كعدد صحيح.
radix هو باراميتر إختياري مكانه يمكن تمرير عدد يمثل الطريقة التي نريد بها تحويل قيمة المتغير string.
  • ترجع نسخة من النص كعدد صحيح إذا كان بالإمكان تحويله.
  • ترجع القيمة NaN إن لم يكن بالإمكان تحويل النص إلى عدد صحيح.
مثال عنها
6 Number.parseFloat(string) تستخدم لإرجاع نسخة من النص الذي نمرره لها مكان الباراميتر string كعدد عشري.
  • ترجع نسخة من النص كعدد عشري إذا كان بالإمكان تحويله.
  • ترجع القيمةNaN إن لم يكن بالإمكان تحويل النص إلى عدد عشري.
مثال عنها

في صفحات الويب، الدالتين Number.parseInt() و Number.parseFloat() يمكن استدعاءهما بشكل مباشر هكذا parseInt() و parseFloat() و لكننا ننصح بعدم فعل ذلك حتى يكون الكود نفسه قابل للإستخدام في باقي المنصات.


ثوابت الكلاس Number

الجدول التالي يحتوي على جميع الثوابت الجاهزة الموجودة في الكلاس Number.

الثابت و تعريفه
1 Number.EPSILON هذا الثابت يحتوي على عدد عشري يمثل الفارق بين العدد 1 و أصغر عدد موجود بعده.
قيمته تساوي 2-52 و التي تساوي 2.220446049250313e-16.
2 Number.MAX_SAFE_INTEGER هذا الثابت يحتوي على أكبر عدد صحيح يمكن تخزينه بشكل آمن في الذاكرة.
قيمته تساوي 253 - 1 و التي تساوي 9007199254740991.
3 Number.MIN_SAFE_INTEGER هذا الثابت يحتوي على أدنى عدد صحيح يمكن تخزينه بشكل آمن في الذاكرة.
قيمته تساوي - (253 - 1) و التي تساوي -9007199254740991.
4 Number.MAX_VALUE هذا الثابت يحتوي على أعلى عدد يمكن تخزينه في جافاسكربت.
قيمته تساوي (21024 - 2971) و التي تساوي 1.7976931348623157E+308.
إذا حاولت تخزين عدد أكبر من هذا فإنه سيفقد قيمته و سيتم وضع القيمة Infinity مكانه.
5 Number.MIN_VALUE هذا الثابت يحتوي على أدنى عدد يمكن تخزينه في جافاسكربت.
قيمته تساوي 2-1074 و التي تساوي 5E-324.
إذا حاولت تخزين عدد أدنى من هذا فإنه سيفقد قيمته و سيتم وضع القيمة -Infinity مكانه.
6 Number.NaN هذا الثابت يمثل قيمة لا يمكن تمثيلها عديداً.
7 Number.POSITIVE_INFINITY هذا الثابت يمثل عدد تجاوز الحد الأقصى للعدد الذي يمكن تخزينه في جافاسكربت.
إذاً قيمته تساوي القيمة Infinity.
8 Number.NEGATIVE_INFINITY هذا الثابت يمثل عدد تجاوز الحد الأدنى للعدد الذي يمكن تخزينه في جافاسكربت.
إذاً قيمته تساوي القيمة -Infinity.

مثال حول جميع الثوابت


دوال الكلاس Math

الجدول التالي يحتوي على جميع الدوال الجاهزة الموجودة في الكلاس Math.

مثال عنها
الدالة و تعريفها
1 Math.abs(x) ترجع القيمة المطلقة ( Absoulte Value ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
2 Math.acos(x) ترجع قيمة جيب التمام العكسي أو جيب تمام الزاوية القوسي ( Arc Cosine ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
3 Math.acosh(x) ترجع قيمة معكوس جيب التمام الزائدي ( Inverse Hyperbolic Cosine ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
4 Math.asin(x) ترجع قيمة الجيب العكسي أو جيب الزاوية القوسي ( Arc Sine ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
5 Math.asinh(x) ترجع قيمة جيب الزاوية الزائدي أو الجيب الزائدي ( Hyperbolic Sine ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
6 Math.atan(x) ترجع قيمة الظل العكسي أو ظل الزاوية القوسي ( Arc Tangent ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
7 Math.atan2(y, x) ترجع قيمة الزاوية الموجبة ما بين الخط المنطلق على المحور من المصدر (0, 0) إلى النقطة الموجودة على الإحداثيات التي نمررها مكان الباراميترين y و x.
مثال عنها
8 Math.atanh(x) ترجع قيمة الظل التمام العكسي أو ظل تمام الزاوية القوسي ( Hyperbolic Arc Tangent ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
9 Math.cbrt(x) ترجع قيمة الجذر التكعيبي ( Cube Root ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
10 Math.clz32(x) ترجع عدد يتألف من 32 bit يمثل العدد الذي نمرره لها مكان الباراميتر x و يتم حسابه بمبدأ Double Precision Floating Point.
مثال عنها
11 Math.ceil(x) ترجع العدد الصحيح الأكبر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
12 Math.cos(x) ترجع قيمة جيب التمام ( Cosine ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
13 Math.cosh(x) ترجع قيمة جيب التمام الزائدي ( Hyperbolic Cosine ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
14 Math.exp(x) ترجع قيمة ex، أي قيمة المتسارع ( Exponential ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
15 Math.expm1(x) ترجع قيمة ex - 1، أي قيمة المتسارع ( Exponential ) للعدد الذي نمرره لها مكان الباراميتر x ناقص واحد.
16 Math.floor(x) ترجع العدد الصحيح الأصغر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
17 Math.fround(x) ترجع العدد العشري الذي نمرره لها مكان الباراميتر x بمساحة تخزين و يتم حسابه بمبدأ Double Precision Floating Point.
مثال عنها
18 Math.hypot(v1, v2, .., vn) ترجع قيمة وتر المثلث ( Hypotenuse ).
أي ترجع قيمة sqrt(v1 + v2, + .., + vn) مع الحفاظ على أي رقم موجود بعد الفاصلة.
مثال عنها
19 Math.log(x) ترجع قيمة loge(x)، أي قيمة اللوغاريتم ( Logarithm ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
20 Math.imul(x, y) ترجع ناتج مضروب العددين اللذين نمررهما لها مكان الباراميترين x و y بمساحة تخزين 32 bit.
مثال عنها
21 Math.log10(x) ترجع قيمة log10(x)، أي قيمة اللوغاريتم العشري ( Decimal Logarithm ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
22 Math.log1p(x) ترجع قيمة ln(1 + x)، أي قيمة اللوغاريتم الطبيعي ( Natural Logarithm ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
23 Math.log2(x) ترجع قيمة log2(x)، أي قيمة اللوغاريتم الثنائي ( Binary Logarithm ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
24 Math.max(v1, v2, .., vn) ترجع العدد الأكبر بين الأعداد التي نمررها لها.
مثال عنها
25 Math.min(v1, v2, .., vn) ترجع العدد الأصغر بين الأعداد التي نمررها لها.
مثال عنها
26 Math.pow(x, y) تضاعف قيمة الباراميتر x بقيمة الباراميتر y ثم ترجع الناتج.
مثال عنها
27 Math.random() ترجع عدد عشوائي بين صفر و واحد.
للدقة فإن العدد الذي ترجعه يكون أكبر من صفر و أصغر من واحد كما يلي 0 > x < 1
مثال عنها
28 Math.round(x) ترجع أقرب عدد صحيح للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
29 Math.sign(x) ترجع 1 إذا كان عدد الذي نمرره لها مكان الباراميتر x أكبر من صفر.
ترجع -1 إذا كان عدد الذي نمرره لها مكان الباراميتر x أصغر من صفر.
إذا كان العدد 0 أو -0 فإنها ترجعه كما هو.
مثال عنها
30 Math.sin(x) ترجع قيمة جيب الزاوية أو الجيب ( Sine ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
31 Math.sinh(x) ترجع قيمة منحنى جيب الزاوية ( Hyperbolic Sine ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
32 Math.sqrt(x) ترجع قيمة الجذر التربيعي (Square Root) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
33 Math.tan(x) ترجع قيمة الظل أو ظل الزاوية أو المماس ( Tangent ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
34 Math.tanh(x) ترجع قيمة الظل الزائدي أو المماس الزائدي ( Hyperbolic Tangent ) للعدد الذي نمرره لها مكان الباراميتر x.
مثال عنها
35 Math.trunc(x) ترجع نسخة من العدد العشري الذي نمرره لها مكان الباراميتر x ليس فيها أي عدد بعد الفاصلة، أي ترجع نسخة صحيحة منه.
مثال عنها

نود الإشارة إلى أن الترجمات العربية للمصطلحات الأجنبية المذكورة في الجدول السابقة قد تكون غير دقيقة.


ثوابت الكلاس Math

الجدول التالي يحتوي على جميع الثوابت الجاهزة الموجودة في الكلاس Math.

الثابت و تعريفه
1 Math.E هذا الثابت يحتوي على قيمة العدد أويلر ( Euler's Number ) و التي يرمز لها في الرياضيات بالحرف e.
قيمته تساوي 2.718281828459045.
2 Math.PI هذا الثابت يحتوي على قيمة نسبة محيط الدائرة إلى قطرها و الذي يرمز له في الرياضيات بالحرف π.
قيمته تساوي 3.141592653589793.
3 Math.LN10 هذا الثابت يحتوي على قيمة اللوغاريتم الطبيعي ( Natural Logarithm ) للعدد 10 و التي يرمز لها بهذا الشكل في الرياضيات ln.
قيمته تساوي 2.302585092994046.
4 Math.LN2 هذا الثابت يحتوي على قيمة اللوغاريتم الطبيعي ( Natural Logarithm ) للعدد 2 و التي يرمز لها بهذا الشكل في الرياضيات ln2.
قيمته تساوي 0.6931471805599453.
5 Math.LOG10E هذا الثابت يحتوي على قيمة اللوغاريتم 10 للعدد أويلر و التي يرمز لها بهذا الشكل في الرياضيات log10(e).
قيمته تساوي 0.4342944819032518.
6 Math.LOG2E هذا الثابت يحتوي على قيمة اللوغاريتم 2 للعدد أويلر و التي يرمز لها بهذا الشكل في الرياضيات log2(e).
قيمته تساوي 1.4426950408889634.
7 Math.SQRT1_2 هذا الثابت يحتوي على قيمة الجزر التربيعي ( Square Root ) للعدد 2 على 1.
قيمته تساوي 0.7071067811865476.
8 Math.SQRT2 هذا الثابت يحتوي على قيمة الجزر التربيعي ( Square Root ) للعدد 2.
قيمته تساوي 1.4142135623730951.

مثال حول جميع الثوابت

طريقة توليد عدد عشوائي في جافاسكربت

في حالات كثيرة قد تحتاج إلى توليد أعداد عشوائية و قد تكون بحاجة إلى تحديد نطاق الأعداد العشوائية التي ترغب في توليدها، فمثلاً إذا كنت تبرمج لعبة تتضمن حجر النرد ( Dice ) قد ترغب في الحصول على أعداد عشوائية بين 1 و 6 حصراً.

للحصول على رقم عشوائي، يمكننا استخدام الدالة random() التي سبق و تعرفنا عليها. و لكننا الآن سنتعلم كيف نحدد أصغر و أكبر عدد عشوائي ترجعه لنا.


في المثال التالي قمنا باستخدام الدالة random() لتوليد أعداد عشوائية ضمن نطاق محدد. بعدها قمنا بتقريب الأعداد التي تم توليدها بواسطة الدالة floor() لإزالة أي أرقام بعد الفاصلة و البقاء ضمن نطاق الأرقام التي نريد توليدها.

المثال الأول

// ترجع رقم عشوائي بين 0 و 4
Math.floor(Math.random() * 5); 

// ترجع رقم عشوائي بين 0 و 5
Math.floor(Math.random() * 6);

// ترجع رقم عشوائي بين 0 و 5
Math.floor(Math.random() * 5) + 1;
جرب الكود

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

المثال الثاني

// getRandomNumber() هنا قمنا بتعريف الدالة
function getRandomNumber(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

// هنا قمنا بتوليد رقم عشوائي بين 1 و 6 بواسطة الدالة
// x و من ثم قمنا بتخزينه في المتغير getRandomNumber()
let x = getRandomNumber(1, 6);

// x هنا قمنا بطباعة القيمة الموجودة في
document.write('x = ' + x);
جرب الكود