انواع متد های اعداد در 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 باشد.
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
نکته: در متد toString مبنا به صورت پیشفرض، 10 در نظر گرفته می شود.
(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 ).valueOf(); // numbers
y = ( 1.23 ).valueOf(); // numbers
z = ( new Number(123) ).valueOf(); // object
typeof(x); // numbers
typeof(y); // numbers
typeof(z); // 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 است، که به آن مبدا زمان می گویند. با کمک مهرزمانی سیستم های کامپیوتری و برنامه ها می توانند بدون توجه موقیت مکانی، زمان را محاسبه، مقایسه و ذخیره کنند.
نکته: در 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.33"); // 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.isInteger() یک بولین است.
نکته: متد 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)