جافاسكريب من اللغات اللى فيها تفاصيل كتير ممكن تسبب لخبطة لأي مبتدئ او حتي متوسط، واحدة من الحاجات دي هي طريقة تمثيل الأعداد.
نفترض انك كتبت كود عشان تسترجع عدد معين ولكن المخرجات في الأخر طلعت نتيجة آخرى.
زي المثال ده :
let num = 021
console.log(num)
// output: 17 (decimal equivalent)
الoutput
طلعت 17 مش 21
السبب هنا إن جافاسكريب بتفسر العدد حسب الصيغة (literal form)
وبعد كده بتحوله وبيتخزن داخلياً ك
Double Precision Floating Point.
سواء كتبت العدد
بال Octal (0o21)
أو بال Hexadecimal (0x1A)
او بال Binary (0b1010)،
هيتم تحويل العدد لرقم عشري.
وجود الصفر في بداية العدد (021) معناه إن الرقم مش عشري وهيتم تحويله، الإستثناء الوحيد هو لما يكون الرقم صفر (0) لوحده ساعتها هيتم طباعته.
وعشان تتجنب المشكلة ممكن تستخدم الدالة
toString(base) لتحويل العدد لأي قاعدة عددية
let number = 255;
// 11111111 (ثنائي)
console.log(number.toString(2));
// 377 (ثماني)
console.log(number.toString(8));
// ff (ست عشري)
console.log(number.toString(16));
بالطريقة دي، تقدر تطبع أي رقم بأي نظام عددي بدون أي مشاكل، وتتفادى استخدام الصيغ القديمة اللي فيها صفر في البداية (021) واللي ممكن تعمل لخبطة أو خطأ في الإصدارات الحديثة من جافاسكريبت.
Top comments (0)