در ادامۀ آموزش پیشین، در این آموزش جهت معرفی برخی دیگر از متدهای کاربردی کلاس Math
از پروژۀ تعریفشده در آموزش قبل استفاده کرده و قصد داریم تا نحوۀ عملکرد متدهایی همچون ()max
و ()min
و همچنین متدهای ()pow
و ()sqrt
به همراه متد ()round
را مورد بررسی قرار دهیم.
متد ()max
اولین متدی که در این آموزش از کلاس Math
مورد بررسی قرار میدهیم ()max
است که بر خلاف متدهای معرفیشده در آموزش پیش، دو آرگومان ورودی میگیرد که با یک ,
از یکدیگر جدا میشود. در واقع، وظیفۀ متد ()max
این است که از بین دو آرگومان ورودی عدد بزرگتر را در خروجی ریترن کند که برای درک بهتر نحوۀ کار این متد، کد مربوط به کلاس MathClass
از آموزش پیشین را مد نظر قرار داده و در آن متد ()max
را به صورت زیر فراخوانی میکنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.max(12, 22));
}
}
همانطور که ملاحظه میکنیم، متد ()max
با دو آرگومان ورودی معادل اعداد 12 و 22 فراخوانی شده است که با اجرای برنامه انتظار داریم تا عدد 22 در خروجی ریترن شده و توسط متد ()println
در کنسول چاپ شود. بنابراین با اجرای کد فوق در خروجی خواهیم داشت:
22
حال ببینیم چنانچه اعداد مربوط به آرگومان ورودی را به صورت ترکیبی از یک عدد اعشاری و یک عدد صحیح تعریف کنیم چه اتفاقی میافتد که برای این منظور نیز کد فوق را به صورت زیر بازنویسی میکنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.max(12.1, 22));
}
}
در کد فوق، متد ()max
از کلاس Math
با دو آرگومان ورودی معادل اعداد 12/1 و 22 فراخوانی شده است و انتظار داریم که خروجی حاصل از آن عدد 22 باشد که با اجرای برنامه در خروجی خواهیم داشت:
22.0
همانطور که مشاهده میکنیم، باز هم عدد بزرگتر معادل عدد 22 توسط متد ()println
در کنسول چاپ شده است با این تفاوت که عدد صحیح 22 به یک عدد اعشاری معادل 22/0 تبدیل شده است. در واقع، آرگومانهای ورودی متد ()max
هم میتوانند دادهای از جنس int
و هم double
باشند اما در این مثال یکی از ورودیها از نوع عدد صحیح و دیگری اعشاری بود و از همین روی با فراخوانی متد ()max
ابتدا هر دو عدد به مقادیری از جنس double
تبدیل شده و در ادامه با یکدیگر مقایسه شدند تا بزرگترین مقدار (در این مثال عدد 22/0) در خروجی ریترن گردد.
متد ()min
متد ()min
نقطۀ مقابل ()max
است که وظیفۀ آن پیدا کردن کوچکترین مقدار از میان دو آرگومان ورودی و ریترن کردن مقدار کوچکتر در خروجی میباشد که برای درک بهتر نحوۀ عملکرد این متد کد، فوق را به صورت زیر بازنویسی میکنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.min(12.1, 22));
}
}
پس از اجرای برنامۀ فوق، مشابه مثال پیشین ابتدا هر دو عدد به مقادیر اعشاری تبدیل شده سپس از میان آنها کوچکترین مقدار توسط متد ()println
در کنسول چاپ شده است به طوری که با اجرای برنامۀ فوق در خروجی خواهیم داشت:
12.1
همانطور که میبینیم، فراخوانی متد ()min
با دو آرگومان ورودی معادل اعداد 12/1 و 22 منجر به ریترن شده کوچکترین مقدار معادل عدد 12/1 در خروجی شده است.
متد ()pow
در این بخش از آموزش متد دیگری از کلاس Math
تحت عنوان ()pow
را معرفی مینماییم. در واقع، متد ()pow
جهت به توان رساندن مقادیر عددی مورد استفاده قرار میگیرد و نحوۀ کار آن بدین صورت است که دو آرگومان ورودی گرفته و عدد مربوط به آرگومان ورودی اول را به توان آرگومان ورودی دوم میرساند که با دانستن این نکته میتوانیم کد فوق را به صورت زیر بازنویسی نماییم تا خروجی متدی را مشاهده کنیم که مسئول به توان رساندن در زبان برنامهنویسی جاوا است:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.pow(2, 3));
}
}
در تفسیر کد فوق باید گفت که متد ()pow
از کلاس Math
را با دو آرگومان ورودی معادل اعداد 2 و 3 فراخوانی کردهایم که پس از اجرای برنامه نیز عدد 2 به توان 3 رسیده و نتیجۀ حاصل از آن توسط متد ()println
در خروجی ریترن میشود به طوری که با اجرای برنامۀ فوق در خروجی خواهیم داشت:
8.0
همانطور که میبینیم، حاصل عملیات ریاضیاتی 2 به توان 3 معادل عدد 8 در کنسول چاپ شده است. در ادامه، متد دیگری را معرفی میکنیم که نقطۀ مقابل متد ()pow
میباشد.
متد ()sqrt
از جمله دیگر متدهای کلاس Math
میتوان به ()sqrt
اشاره کرد که به منظور گرفتن جذرِ عدد مربوط به آرگومان ورودی مورد استفاده قرار میگیرد و نحوۀ عملکرد آن بدین صورت است که یک آرگومان ورودی گرفته و عدد معادل جذر آن را در خروجی ریترن میکند (توجه داشته باشیم که نام این متد از واژۀ Square Root به معنای «جذر» در ریاضیات گرفته شده است.) اکنون پس از آشنایی با این متد میتوانیم کد مربوط به مثال پیشین را به صورت زیر بازنویسی کنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.sqrt(9));
}
}
در کد فوق، عدد 9 را به عنوان آرگومان ورودی به متد ()sqrt
دادهایم. در حقیقت، علت انتخاب عدد 9 به عنوان آرگومان ورودی این است که عدد مذکور دارای یک مجذور رُند میباشد اما میتوانیم هر عدد مثبت دلخواهی را به عنوان ورودی به این متد بدهیم. اکنون پس از اجرای برنامه در خروجی خواهیم داشت:
3.0
همانطور که میبینیم، فراخوانی متد ()sqrt
با آرگومان ورودی معادل عدد 9 منجر به ریترن شدن عدد 3 در خروجی شده و این عدد نیز توسط متد ()println
در کنسول چاپ شده است.
متد ()round
در پایان، با متد ()round
و همچنین نحوۀ عملکرد آن آشنا میشویم که این وظیفه را دارا است تا تمامی اعدادی که به عنوان آرگومان ورودی دریافت میکند را به عددی رُند تبدیل کرده و در خروجی ریترن نماید و نکتۀ قابلتوجه در ارتباط با نحوۀ عملکرد متد ()round
این است که عددی همچون 21/3 را به عدد 21 و عددی مانند 21/6 را به عدد 22 رُند میکند بدین معنی که چنانچه مقدار اعشار عدد مورد نظر کوچکتر از 0/5 باشد، عدد مذکور را رو به پایین و در غیر این صورت آن را رو به بالا رُند نموده و در خروجی ریترن میکند که برای روشن شدن نحوۀ عملکرد این متد، کد فوق را به صورت زیر بازنویسی میکنیم:
public class MathClass {
public static void main(String[] args) {
System.out.println(Math.round(21.3));
}
}
در کد فوق، متد ()round
را با آرگومان ورودی معادل عدد 21/3 فراخوانی نمودهایم و میبینیم که بخش اعشار این عدد کمتر از 0/5 میباشد و از همین روی متد ()round
آن را رو به پایین معادل عدد 21 رُند میکند که برای حصول اطمینان از این موضوع، برنامۀ فوق را یک بار اجرا میکنیم و در خروجی خواهیم داشت:
21
همانطور که میبینیم، عدد اعشاری 21/3 رو به پایین رُند شده و نتیجۀ حاصل از آن توسط متد ()println
در کنسول نمایش داده میشود. حال اگر عدد مربوط به آرگومان ورودی را به 21/6 تغییر دهیم، در خروجی خواهیم داشت:
22
در واقع، بخش اعشاری عدد 21/6 بزرگتر از 0/5 بوده و از همین روی متد ()round
آن را رو به بالا معادل عدد 22 رُند کرده است.