انواع متد های اعداد در JS
هر نوع داده (data type) دارای متدها و ویژگی های مخصوص به خود است. در این بخش، متدهای اعداد را بررسی می کنیم.
متدهای numbers numbers.toString() تبدیل عدد به رشته numbers.toExponential() عدد را گرد و با نماد e بر می گرداند numbers.toFixed() مشخص کردن تعداد اعشار numbers.toPrecision() مشخص کردن طول اعداد numbers.valueOf() تبدیل شیء عددی به numbers متدهای شیء window (تبدیل به نوع numbers) Number(numbers) تبدیل به عدد parseFloat(numbers) تبدیل رشته به عدد parseInt(numbers) تبدیل به عدد صحیح
متدهای شیء Number Number.isInteger(numbers) بررسی عدد صحیح Number.isSafeInteger(numbers) بررسی عدد صحیح امن Number.parseFloat(numbers) تبدیل رشته به عدد Number.parseInt(numbers) تبدیل به عدد صحیح
متد toString() اعداد در JS
متد toString()، عدد را به رشته تبدیل و بر می گرداند.
متد toString دارای یک پارامتر اختیاری است. که به کمک آن مبنا عدد دریافت می شود. بازه مبنا می تواند از 2 تا 36 باشد.
نکته: در متد toString، مبنا به صورت پیشفرض، 10 در نظر گرفته می شود.
let x = 100;
x.toString();
(100).toString();
(50 + 50).toString();
در سیستم اعداد دودویی (باینری - binary)، فقط 2 عدد وجود دارد:
- پس مبنا 2 است.
- 0 - 1
در سیستم اعداد هشت هشتی (اکتال- octal)، 8 عدد وجود دارد.
- مبنا 8 است.
- 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7
در سیستم اعداد ده دهی (دسیمال - decimal)، 10 عدد وجود دارد.
- مبنا 10 است.
- 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9
در سیستم اعداد شانزده شانزدهی (هگزادسیمال - hexadecimal)، 16 عدد وجود دارد.
- پس مبنا 16 است.
- 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - A - B - C - D - E - F
(100).toString(16) ; // هگزادسیمال
(100).toString(10); // دسیمال
(100).toString(8); // اکتال
(100).toString(2); // باینری
نکته: برای اطلاعات بیشتر درباره مبنا، به مبنا در ویکی پدیا مراجعه کنید.
متد toExponential() در JS
متد ()toExponential، یک عدد را گرد و با نماد e بر می گرداند. مقدار برگشتی یک رشته است.
این متد یک پارامتر اختیاری به عنوان طول اعشار (تعداد اعشار) دریافت می کند.
(2.3456).toExponential(); // 2.3456e+0
(2.3456).toExponential(2); // 2.35e+0
(2.3456).toExponential(4); // 2.3456e+0
(2.3456).toExponential(6); // 2.345600e+0
متد toFixed() در JS
متد ()toFixed، یک عدد را گرد و بر می گرداند. مقدار برگشتی یک رشته است.
این متد یک پارامتر اختیاری به عنوان طول اعشار (تعداد اعشار) دریافت می کند.
(2.3456).toFixed(); // 2
(2.3456).toFixed(2); // 2.35
(2.3456).toFixed(3); // 2.346
(2.3456).toFixed(4); // 2.3456
متد toPrecision() در JS
متد ()toPrecision، یک عدد را گرد و بر می گرداند. مقدار برگشتی یک رشته است.
این متد یک پارامتر اختیاری به عنوان طول اعداد (تعداد اعداد) دریافت می کند.
(2.3456).toPrecision(); // 2.3456
(2.3456).toPrecision(2); // 2.3
(2.3456).toPrecision(3); // 2.35
(2.3456).toPrecision(4); // 2.346
(2.3456).toPrecision(6); // 2.34560
متد valueOf() در JS
متد ()valueOf، یک شیء عددی را به عدد تبدیل و بر می گرداند. مقدار برگشتی یک numbers است.
نکته: جاوا اسکریپت به صورت داخلی از متد valueOf برای تبدیل اشیا عددی به عدد استفاده می کند. و چون ما از اشیاء عددی استفاده نمی کنیم، نیازی به استفاده از valueOf نیست.
x = 123; // numbers
y = 1.23; // numbers
z = new Number(123); // object
typeof(x.valueOf()); // numbers
typeof(y.valueOf()); // numbers
typeof(z.valueOf()); // numbers
متد Number() در JS
متد ()Number می تواند انواع داده JS را به نوع داده numbers تبدیل کند.
Number(true); // 1
Number(false); // 0
Number("10"); // 10
Number(" 10"); // 10
Number("10 "); // 10
Number(" 10 "); // 10
Number("10.33"); // 10.33
Number("10,33"); // NaN
Number("10 33"); // NaN
Number("Ehsan"); // NaN
نکته: اگر عدد قابل تبدیل نباشد، NaN برگردانده می شود.
نکته: متد Number زیر مجموعه متدهای اعداد نیست. بلکه زیر مجموعه شیء سراسری window است. بنابراین این متد را به صورت window.Number() هم می توان نوشت.
متد Number() و تاریخ در JS
متد ()Number همچنین می تواند تاریخ را به عدد (مهر زمانی) تبدیل کند.
نکته: مهر زمانی یا timestamp راهی برای محاسبه زمان از طریق جمع ثانیه هاست. زمان شروع این محاسبه 1970/01/01 به وقت UTC است، که به آن مبدا زمان می گویند. با کمک مهر زمانی سیستم های کامپیوتری و برنامه ها می توانند بدون توجه موقیت مکانی، زمان را محاسبه، مقایسه و ذخیره کنند. برای درک بهتر به مثال زیر دقت کنید.
1970/01/01 // مبدا زمانی - 0 ثانیه
1970/01/02 // 60 * 60 * 24 = 86400 جمع ثانیه های یک روز
1970/01/03 // 60 * 60 * 24 * 2 = 172800 جمع ثانیه های دو روز
// هر دقیقه شامل 60 ثانیه
// هر ساعت شامل 60 دقیقه
// هر روز شامل 24 ساعت
نکته: در JS مهر زمانی به میلی ثانیه بررسی می شود. هر یک ثانیه، هزار میلی ثانیه (1s = 1000ms) است.
let x = new Date("1970-01-01");
Number(x); // 0
let x = new Date("1970-01-02");
Number(x);
let x = new Date();
Number(x);
متد parseFloat() در JS
متد ()parseFloat یک رشته را تجزیه و آن را به نوع داده numbers تبدیل و بر می گرداند. مقدار برگشتی عدد صحیح یا اعشاری است.
parseFloat("10"); // 10
parseFloat("10.33"); // 10.33
parseFloat("10 6"); // 10
parseFloat("10 years"); // 10
parseFloat("years 10"); // NaN
نکته: در صورت وجود چند عدد با فاصله، فقط اولین عدد برگردانده می شود.
نکته: اگر عدد قابل تبدیل نباشد، NaN برگردانده می شود.
نکته: متد parseFloat زیر مجموعه متدهای اعداد نیست. بلکه زیر مجموعه شیء سراسری window است. بنابراین این متد را به صورت window.parseFloat() هم می توان نوشت.
متد parseInt() در JS
متد ()parseInt یک رشته را تجزیه و آن را به نوع داده numbers تبدیل و بر می گرداند. مقدار برگشتی به عدد صحیح تبدیل می شود.
parseInt("-10"); // -10
parseInt("-10.33"); // -10
parseInt("10"); // 10
parseInt("10.77"); // 10
parseInt("10 6"); // 10
parseInt("10 years"); // 10
parseInt("years 10"); // NaN
نکته: در صورت وجود چند عدد با فاصله، فقط اولین عدد برگردانده می شود.
نکته: اگر عدد قابل تبدیل نباشد، NaN برگردانده می شود.
نکته: متد parseInt زیر مجموعه متدهای اعداد نیست. بلکه زیر مجموعه شیء سراسری window است. بنابراین این متد را به صورت window.parseInt() هم می توان نوشت.
متد Number.isInteger() در JS
متد ()Number.isInteger چک می کند آیا مقدار عدد صحیح است یا خیر.
Number.isInteger(10); // true
Number.isInteger(10.5); // false
نکته: برگشتی متد Number.isInteger() یک بولین است.
نکته: متد Number.isInteger() زیر مجموعه شیء Number است.
متد Number.isSafeInteger() در JS
متد Number.isSafeInteger() چک می کند آیا مقدار عدد صحیح امن است یا خیر.
Number.isSafeInteger(10); // true
Number.isSafeInteger(12345678901234567890); // false
نکته: اعداد صحیح امن، از -(253 - 1) تا +(253 - 1) هستند.
نکته: اگر عدد صحیح بزرگ تر یا کوچک تر از ناحیه امن باشد. امکان دارد عدد شما به صورت خودکار گرد شود یا محسبات ریاضی نتیجه اشتباه برگرداند. برای اعداد خارج از محدوده امن از نوع داده bigInt استفاده کنید.
نکته: برگشتی متد Number.isSafeInteger() یک بولین است.
نکته: متد Number.isSafeInteger() زیر مجموعه شیء Number است.
متد Number.parseFloat() در JS
متد Number.parseFloat() یک رشته را تجزیه و numbers را برمی گرداند.
Number.parseFloat("10"); // 10
Number.parseFloat("10.33"); // 10.33
Number.parseFloat("10 20 30"); // 10
Number.parseFloat("10 years"); // 10
Number.parseFloat("years 10"); // NaN
نکته: اگر عدد قابل تبدیل نباشد، NaN برگردانده می شود.
نکته: در صورت وجود چند عدد با فاصله، فقط اولین عدد برگردانده می شود.
نکته: متد Number.parseFloat() زیر مجموعه شیء Number است.
نکته: متد Number.parseFloat() و متد window.parseFloat() هر دو عملکرد یکسان دارند. متد window.parseFloat() یا parseFloat() صرفا به دلیل استفاده راحت تر و کوتاه نویسی برای کدنویسی سمت سرور با جاوا اسکریپت (Node.js) اضافه شده است.
متد Number.parseInt() در JS
متد ()Number.parseInt یک رشته را تجزیه و numbers را برمی گرداند. مقدار برگشتی به عدد صحیح تبدیل می شود.
Number.parseInt("-10"); // -10
Number.parseInt("-10.33"); // -10
Number.parseInt("10"); // 10
Number.parseInt("10.33"); // 10
Number.parseInt("10 6"); // 10
Number.parseInt("10 years"); // 10
Number.parseInt("years 10"; // NaN
نکته: اگر عدد قابل تبدیل نباشد، NaN برگردانده می شود.
نکته: متد Number.parseInt() زیر مجموعه شیء Number است.
نکته: متد Number.parseInt() و متد window.parseInt() هر دو عملکرد یکسان دارند. متد window.parseInt() یا parseInt() صرفا به دلیل استفاده راحت تر و کوتاه نویسی برای کدنویسی سمت سرور با جاوا اسکریپت (Node.js) اضافه شده است.
خلاصه درس
در این فصل با متد های اعداد زیر آشنا شدیم:
- متد numbers.toString()
- متد numbers.toExponential()
- متد numbers.toFixed()
- متد numbers.toPrecision()
- متد numbers.valueOf()
- متد Number(numbers)
- متد parseFloat(numbers)
- متد parseInt(numbers)
- متد Number.isInteger(numbers)
- متد Number.isSafeInteger(numbers)
- متد Number.parseFloat(numbers)
- متد Number.parseInt(numbers)