
بخش ۵: اعداد: عملیات پایه و شیء Math (Numbers: Basic Operations and Math Object)
اعداد از پایهایترین انواع داده در جاوااسکریپت هستند. درک عمیق نحوه کار با اعداد و شیء Math برای انجام محاسبات پیچیده ضروری است.
مفاهیم کلیدی:
۱. انواع اعداد در جاوااسکریپت:
- اعداد صحیح (Integer):
42 - اعداد اعشاری (Float):
3.14 - نماد علمی (Scientific):
1.2e3(برابر با 1200) - مقادیر خاص:
Infinity,-Infinity,NaN
let integer = 42;
let float = 3.14;
let scientific = 1.2e3;
let infinity = 5 / 0;
let notANumber = "abc" / 2;
console.log(scientific); // 1200
console.log(infinity); // Infinity
console.log(notANumber); // NaN۲. متدهای مهم اعداد:
let num = 3.14159;
// تبدیل به رشته با اعشار مشخص
console.log(num.toFixed(2)); // "3.14"
// تبدیل به رشته در مبنای مختلف
console.log((255).toString(16)); // "ff"
// بررسی NaN
console.log(isNaN("abc")); // true
console.log(Number.isNaN("abc")); // false (متد جدیدتر)
// تبدیل رشته به عدد
console.log(parseInt("123abc")); // 123
console.log(parseFloat("3.14abc")); // 3.14۳. شیء Math برای عملیات پیشرفته:
// ثابتهای ریاضی
console.log(Math.PI); // 3.141592653589793
console.log(Math.E); // 2.718281828459045
// متدهای گردکردن
console.log(Math.round(4.7)); // 5
console.log(Math.floor(4.7)); // 4
console.log(Math.ceil(4.2)); // 5
// متدهای محاسباتی
console.log(Math.max(1, 5, 10)); // 10
console.log(Math.min(1, 5, 10)); // 1
console.log(Math.sqrt(16)); // 4
console.log(Math.pow(2, 3)); // 8
// اعداد تصادفی
console.log(Math.random()); // عددی بین 0 تا 1۴. تولید عدد تصادفی در بازه مشخص:
// تولید عدد تصادفی بین min و max (شامل خود min و max)
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandomInt(1, 10)); // عددی بین 1 تا 10۵. مشکل دقت در اعداد اعشاری:
console.log(0.1 + 0.2); // 0.30000000000000004
// راه حل: استفاده از toFixed
let result = (0.1 + 0.2).toFixed(2);
console.log(result); // "0.30"ارزیابی بخش ۵:
سؤال ۱: پیشبینی خروجی خروجی هر خط از کد زیر چیست؟
console.log((3.14159).toFixed(3));
console.log(parseInt("100px"));
console.log(Math.floor(7.8));
console.log(Math.ceil(7.2));
console.log(Math.max(2, 8, 5));
console.log(Math.pow(3, 2));
console.log(0.1 + 0.2 === 0.3);سؤال ۲: نوشتن تابع کاربردی تابعی بنویسید که شعاع یک دایره را دریافت کند و مساحت آن را محاسبه و برگرداند.
سؤال ۳: تولید عدد تصادفی تابعی بنویسید که دو عدد min و max را دریافت کند و یک عدد تصادفی صحیح بین آن دو (شامل خود min و max) برگرداند.
پاسخهای شما:
- خروجی کد:
3.142, 100, 7, 8, 8, 9, false - تابع مساحت دایره:
function area(radix) { return radix * radix * 3.14; } - تابع عدد تصادفی:
function getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }
بازخورد و تحلیل پاسخهای شما:
سؤال ۱: پیشبینی خروجی (کاملاً صحیح ✅)
console.log((3.14159).toFixed(3)); // ✅ 3.142 (صحیح - گرد شده)
console.log(parseInt("100px")); // ✅ 100 (صحیح)
console.log(Math.floor(7.8)); // ✅ 7 (صحیح)
console.log(Math.ceil(7.2)); // ✅ 8 (صحیح)
console.log(Math.max(2, 8, 5)); // ✅ 8 (صحیح)
console.log(Math.pow(3, 2)); // ✅ 9 (صحیح)
console.log(0.1 + 0.2 === 0.3); // ✅ false (صحیح - به دلیل مشکل دقت اعشاری)پاسخهای شما کاملاً درست است! شما مشکل دقت اعداد اعشاری در جاوااسکریپت را به خوبی درک کردهاید.
سؤال ۲: تابع مساحت دایره (نیاز به بهبود 🔍)
کد شما از نظر منطقی درست کار میکند، اما میتواند حرفهایتر شود:
// نسخه بهبود یافته:
function calculateCircleArea(radius) {
return Math.PI * Math.pow(radius, 2);
}
// یا به صورت سادهتر:
function calculateCircleArea(radius) {
return Math.PI * radius * radius;
}
console.log(calculateCircleArea(5)); // 78.53981633974483مقایسه با کد شما:
- استفاده از
Math.PIبه جای3.14برای دقت بیشتر - نام پارامتر
radiusبه جایradix(که معمولاً برای مبنا استفاده میشود) - استفاده از
Math.pow()یا عملگر توان**برای خوانایی بهتر
سؤال ۳: تابع عدد تصادفی (کاملاً صحیح ✅)
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandomInt(1, 10)); // ✅ عددی تصادفی بین 1 تا 10این تابع کاملاً درست و بهینه نوشته شده است! فرمول شما استاندارد است و بازه min و max را به درستی پوشش میدهد.
جمعبندی نهایی بخش ۵:
شما مفاهیم اصلی کار با اعداد و شیء Math را به خوبی فرا گرفتهاید:
- ✅ درک متدهای مختلف اعداد (
toFixed,parseInt, etc.) - ✅ تسلط بر شیء Math و متدهای آن
- ✅ آگاهی از مشکل دقت اعداد اعشاری
- ✅ توانایی نوشتن توابع ریاضی کاربردی
نکات مهم برای توسعهدهنده ارشد:
- همیشه از
Math.PIبه جای مقدار ثابت پی استفاده کنید - برای محاسبات مالی از کتابخانههای خاص (مانند decimal.js) استفاده کنید
- از
Number.isNaN()به جایisNaN()استفاده کنید (امنتر است)
آیا این توضیحات شفاف بود و آماده حرکت به بخش بعدی هستید؟
بخش بعدی: “منطق بولین: مقادیر Truthy و Falsy” - یکی از مهمترین مفاهیم در کنترل جریان برنامه!