تابع Round در پایتون چیست؟ – به زبان ساده + مثال
تابع round یکی از توابع درونی زبان برنامه نویسی پایتون است. از این تابع برای گرد کردن اعداد صحیح و اعشاری استفاده میشود. حتی میتوانیم تعداد رقم اعشار یا صحیح را برای گرد کردن مشخص بکنیم. تابع round در پایتون جزو توابع مهم در محاسبات ریاضی و مالی است. برای مثال میخواهیم درصد سود خود را بعد از انجام عملیات مالی بهدست بیاوریم. ممکن است که درصد سود برابر با عددی مانند ۵٫۱۲۸۷۶ بشود. ما میدانیم که ارقام این عدد بعد از رقم دوم اعشار، ارزش چندانی ندارند. با کمک تابع round() و تخصیص مقدار درست به پارامتر دوم آن میتوانیم این عدد را به ۵٫۱۳ تبدیل کنیم. بنابراین انجام محاسبات سادهتر و سریعتر میشود.
- با تابع round در پایتون و کاربرد آن در محاسبات عددی و امور مالی آشنا میشوید.
- روش نوشتن دستور تابع round را در کنار استفاده صحیح از پارامترهای آن میآموزید.
- یاد میگیرید که چطور با کمک Ndigits اعداد اعشاری و صحیح را به مقدار مورد نیاز گرد کنید.
- با حالت تساوی یا گره (Tie) آشنا شده و روش مدیریت آن را یاد میگیرید.
- روش کار با تابع round در پایتون را برای گرد کردن عناصر آرایه Numpy میآموزید.
- با تابع Decimal و کاربرد پرچمهای آن برای گردن کردن اعداد آشنا میشوید.


در این مطلب از مجله فرادرس با تابع round در پایتون آشنا میشویم. ابتدا سینتکس آن را توضیح داده و پارامترهای مختلف را نام میبریم. سپس با کمک مثالهای متنوع روش کار با آن را بررسی میکنیم. بعد از آن روش استفاده از ماژول «Decimal» برای اجرای تکنیکهای مختلف گرد کردن را توضیح دادهایم. در نهایت هم چند کاربرد رایج این تابع را معرفی میکنیم.
تابع round در پایتون چیست؟
در زبان برنامه نویسی پایتون از تابع round() برای گرد کردن ارقام اعشاری استفاده میشود. این تابع، قابلیت تنظیم دارد. یعنی میتوانیم اعلام کنیم برای مثال تا ۳ رقم اعشار را گرد کند. فرض کنیم به فروشگاهی رفته و چند کالای مختلف خریداری کردهایم. فاکتور صادر شده برای این خرید تا ۲ رقم اعشار واحد پولی را نشان میدهد. برای رند کردن این اعداد در سیستمهای حسابداری میتوان از تابع round() کمک گرفت.
تعداد ارقام اعشار بعد از ممیز را میتوان برای تابع round() مشخص کرد. به عنوان نمونه میتوانیم عدد ۶۵٫۲۳۴ را به عدد ۶۵٫۲ تبدیل بکنیم. این تابع یکی از توابع توکار پایتون است. بنابراین در زمان استفاده از آن نیاز به ایمپورت (Import) کردن هیچ کتابخانهای نداریم.
تا به اینجای مطلب شناخت کلی از تابع round در پایتون بدست آوردهاید. در ادامه با سینتکس آن آشنا شده و چند مثال متنوع از کار با این تابع را بررسی میکنید. در صورت تمایل به مطالعه مطالب مرتبط با برنامهنویسی، پیشنهاد میکنیم که حتما اپلیکیشن مجله فرادرس را نصب کنید.
برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.
سینتکس تابع round در پایتون
در کادر پایین، سینتکس مورد استفاده برای نوشتن تابع round() را نوشتهایم.
در این سینتکس، دو پارامتر اصلی وجود دارند. این پارامترها را در فهرست پایین معرفی میکنیم.
- number : این پارامتر همان عددی را نشان میدهد که باید گرد شود. وجود پارامتر number الزامی است. این عدد میتواند از هر نوعی مانند عدد صحیح یا Float باشد. ننوشتن این پارامتر باعث اعلام خطا در پایتون میشود. علاوه بر آن، در صورت ارسال دادههایی با انواع نامناسب (دادههایی که تابع round() پشتیبانی نمیکند)، باز هم برنامه خطا میدهد. برای مثال در صورت ارسال عدد با نوع رشته مانند '203' برنامه پیغام خطای TypeError برمیگرداند.
- Ndigits : این پارامتر تعداد رقمهای بعد از ممیز را نشان میدهد. در واقع میگوید که عدد مورد نظر باید تا چند رقم اعشار گرد شود. وجود این پارامتر اختیاری است. در نتیجه میتوانیم از نوشتن آن صرف نظر کنیم. در صورت ننوشتن این پارامتر، مفسر پایتون پیغام خطا نمیدهد. بلکه عدد دریافت شده را بدون رقم اعشار، گرد میکند. مقدار پیشفرض این پارامتر برابر با 0 است. هر عدد صحیحی از قبیل اعداد مثبت، منفی و ۰ را میتوان به عنوان ورودی به پارامتر Ndigits اختصاص داد.

مقدار برگشت داده شده توسط تابع round در پایتون
مقدار برگشت داده شده توسط تابع round() ارتباط مستقیمی با عدد تخصیص داده شده به متغیر Ndigits دارد. تابع round() همیشه عدد برمیگرداند. خروجی این تابع میتواند از نوع اعداد اعشار یا اعداد صحیح باشد.

بر اساس مستندات رسمی پایتون، وظیفه تابع round() گرد کردن عدد داده شده است. این تابع، عدد مورد نظر را به نزدیکترین مضرب ۱۰ به توان منفی Ndigits گرد میکند. فرمول آن را میتوان به صورت زیر نوشت.
اگر عدد ورودی از نوع «عدد صحیح» (Integer) باشد، خروجی تابع نیز از نوع اعداد صحیح خواهد بود. اما اگر عدد ورودی از نوع اعداد با ممیز شناور یا اعشاری باشد، نوع عدد خروجی به پارامتر Ndigits بستگی دارد. اگر مقداری برای Ndigits در نظر نگرفته باشیم، در خروجی عددی با نوع صحیح برمیگردد. در غیر این صورت، عدد خروجی به اندازه مشخص شده در این پارامتر، رقم اعشار خواهد داشت.
| نوع ورودی | Ndigits | نوع و توضیح خروجی |
|---|---|---|
| عدد صحیح | ندارد | عدد صحیح (همان عدد) |
| عدد صحیح | دارد | عدد صحیح (گرد شده به نزدیکترین مضرب ) |
| عدد اعشاری | ندارد | گرد شده به نزدیکترین عدد صحیح |
| عدد اعشاری | دارد | عدد اعشاری با تعداد رقم مشخص شده در Ndigits |
چند مثال از کار با تابع round در پایتون
در این بخش از مطلب، روش کار تابع round() را با کمک چند مثال ساده بررسی میکنیم.
مثال اول: رند کردن تا سه رقم اعشار
در مثال زیر، عددی با پنج رقم اعشار داده شده است. در صورت سوال خواسته شده است با کمک کدهای پایتون این عدد را تا سه رقم اعشار رند کنیم.
بعد از اجرای کدهای بالا، خروجی زیر تولید شده و در کنسول پایتون نمایش داده میشود.
Number after rounding off = 65.678مثال دوم: رند کردن اعداد بدون استفاده از پارامتر Ndigits
در این مثال، عدد اعشاری با ۵ رقم بعد از ممیز داده شده است. باید کد پایتون را طوری بنویسیم که این عدد را به نزدیکترین عدد صحیح تبدیل بکند. برای حل این سوال نباید از پارامتر Ndigits استفاده کنیم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Number after rounding off = 66
مثال سوم: بررسی عملکرد پارامتر Ndigits
میدانیم که تمام اعداد اعشار بر اساس مقدار مشخص شده در پارامتر Ndigits گرد میشوند. در این مثال از پارامتر Ndigits بر روی دو عدد اعشار مختلف استفاده کرده و عملکرد آن را بررسی میکنیم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Number after rounding off: a = 67.76
Number after rounding off: b = 67.77
یادگیری پایتون از نکات ابتدایی تا پیشرفته با کمک فرادرس
زبان برنامه نویسی پایتون به دلیل سینتکس بسیار سادهای که دارد، به یکی از پرطرفدارترین گزینهها در بین افراد تازهکار و علاقهمند به برنامه نویسی تبدیل شده است. در عین حال، کتابخانههای بسیار متنوع و قدرتمند آن باعث شدهاند که پایتون در میان توسعهدهندگان حرفهای و سازمانهای بزرگ هم کاربرد زیادی داشته باشد. به طور معمول، مراحل اولیه یادگیری این زبان ساده است. اما یادگیری تکنیکهای برنامه نویسی پیشرفته در پایتون نیاز به تمرین و تلاش بیشتری دارد. هر چند هر کدام از این بخشها نکات جزئی دارند که بهتر است با کمک مربیان حرفهای و باتجربه آنها را یاد بگیریم.

استفاده از فیلمهای آموزشی استاندارد یکی از راههای دسترسی به مربیان حرفهای و آموزشهای منظم و هدفمند است. استفاده از چنین منابعی تاثیر زیادی در یادگیری حرفهای و رشد صحیح و سریع مهارتها دارد. فرادرس یکی از بهترین منابع تولید فیلمهای آموزشی استاندارد و باکیفیت است. فیلمهای فرادرس با کمک اساتید باتجربه، تکنیکهای مدرن و جدید را آموزش میدهند. در این فیلمها از نکات ساده تا بخشهای بسیار پیشرفته مانند شبکههای عصبی و یادگیری ماشین آموزش داده شدهاند.
در پایین، چند مورد از فیلمهای مربوط به آموزش زبان پایتون را معرفی کردهایم.
- فیلم آموزش برنامه نویسی پایتون، مثال های عملی در Python + گواهینامه
- فیلم آموزش رایگان پایتون، برنامه نویسی سریع و آسان در ۱۴۰ دقیقه + گواهینامه
- فیلم آموزش رایگان کتابخانه Datetime در پایتون برای مدیریت زمان + گواهینامه
- فیلم آموزش یادگیری عمیق در پایتون با «تنسورفلو» (TensorFlow) و «کراس» (Keras) + گواهینامه
- فیلم آموزش امنیت شبکه با پایتون از مبانی تا تست نفوذ + گواهینامه
رند کردن اعداد صحیح
استفاده از تابع round() تاثیر قابل توجهی بر روی اعداد صحیح ندارد. مقدار اعداد صحیح فقط وقتی تغییر میکند که پارامتر Ndigits کمتر از صفر باشد. در این صورت، ارقام با ارزش مکانی کمتر گرد میشوند. در نتیجه دقت عدد کاهش پیدا میکند. برای مثال اگر عدد ۶۵۲ را با مقدار ۱- گرد کنیم، خروجی برابر با ۶۵۰ میشود.

به منظور روشنتر شدن این مطلب، در ادامه چند مثال مختلف را بررسی میکنیم.
مثال اول: رند کردن عدد صحیح با مقدار مثبت Ndigits
در این مثال، عدد صحیح به تابع round() داده شده است. به پارامتر Ndigits هم عدد مثبت اختصاص میدهیم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Number after rounding off: a = 888
مثال دوم: رند کردن عدد صحیح با مقدار صفر برای Ndigits
در این مثال میخواهیم عدد صحیحی را گرد بکنیم. مقدار پارامتر Ndigits را برابر با 0 قرار میدهیم. مقدار پارامتر Ndigits در این مثال، هیچ تاثیری بر روی عدد داده شده به تابع round() نمیگذارد.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Number after rounding off: a = 888
همینطور که در مثالهای بالا مشاهده کردید، مقدار مثبت یا صفر در پارامتر Ndigits بر روی عدد صحیح ارسال شده به تابع round() هیچ تاثیری ندارد.

مثال سوم: رند کردن عدد صحیح با مقدار منفی برای Ndigits
در پایتون میتوانیم اعداد صحیح را نیز گرد کنیم. برای انجام این کار باید به پارامتر Ndigitsمقدار منفی اختصاص بدهیم. برای مثال، اختصاص دادن ۱- به این پارامتر به معنای آن است که رقم یکان عدد صحیح از اهمیت چندانی برخوردار نیست و میتوان آن را در نظر نگرفت. اگر مقدار پارامتر Ndigits برابر با ۱- باشد، رقم یکان عدد صحیح صفر شده و رقم دهگان آن به نزدیکترین رقم تبدیل میشود. این فرایند، شبیه به رند کردن اعداد اعشار با تعداد رقم مشخص شده است. با این تفاوت که در آن حالت برای پارامتر Ndigitsاز مقادیر مثبت استفاده میکنیم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Number after rounding off: a = 890
مدیریت حالت گره با کمک تابع round در پایتون
در این بخش از مطلب، روش مدیریت حالت تساوی یا گره را در پایتون بررسی میکنیم. حالت تساوی یا «گره» (Tie) زمانی روی میدهد که آخرین رقم عدد برابر با ۵ باشد. در زمان رند کردن عدد باید این رقم حذف شود، اما به کدام سو. برای بررسی این مشکل، چند مثال ساده را در این بخش حل میکنیم.
تابع round() کاربرد زیادی در حوزه انجام محاسبات مالی دارد. تجزیه و تحلیل دادههای مالی شامل نکات ظریف و ابزارهای دیگری هم میشود. برای آشنایی با روش انجام این کار در پایتون پیشنهاد میکنیم که فیلم آموزش تجزیه و تحلیل داده های مالی با پایتون، بخش یکم + گواهینامه را در فرادرس مشاهده بکنید. به منظور کمک به مخاطبان مجله، لینک این فیلم را در پایین نیز قرار دادهایم.
مثال اول: گره در گرد کردن اعداد صحیح
در این سوال اعداد 8.5 و 7.5 داده شدهاند. باید با کمک تابع round در پایتون این اعداد را گرد بکنیم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Number after rounding off: a = 8
Number after rounding off: b = 8
در کدهای بالا با تابع round() عدد 8.5 را گرد میکنیم. نتیجه این عملیات برابر با 8 است، زیرا پایتون عدد را به نزدیکترین مقدار زوج گرد میکند. سپس عدد 7.5 را هم گرد میکنیم. این بار هم نتیجه 8 میشود، چون 8 نزدیکترین عدد زوج است.
مثال دوم: گره در گرد کردن اعداد اعشاری
پایتون در هنگام گرد کردن اعداد اعشاری هم از همان تکنیک برای مدیریت گره استفاده میکند. در این سوال میخواهیم اعداد 8.85 و 8.75 را تا یک رقم اعشار گرد بکنیم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Number after rounding off: a = 8.8
Number after rounding off: b = 8.8
در کدهای بالا ابتدا با تابع round() عدد 8.85 را تا یک رقم اعشار گرد میکنیم. نتیجه برابر با 8.8 است، چون پایتون به نزدیکترین مقدار زوج گرد میکند. سپس عدد 8.75 را هم تا یک رقم اعشار گرد میکنیم. این بار هم نتیجه 8.8 میشود.
عملکرد تابع round در پایتون با Ndigits منفی
در پایتون، گرد کردن اعداد با استفاده از مقادیر منفی برای رقمهای اعشار مجاز است. در این حالت، بهجای محدود کردن تعداد رقمهای اعشاری، دقت اعداد صحیح کاهش داده میشود. برای این منظور، از مقادیر منفی در پارامتر Ndigits استفاده میکنیم. با این کار، پایتون ارقام کماهمیتتر در سمت راست عدد صحیح را نیز گرد میکند. به طور خلاصه، استفاده از مقدار منفی برای Ndigits باعث میشود ارقام سمت راست عدد صحیح، اهمیت خود را از دست داده و مقدار آنها برابر با صفر قرار گیرد.

در ادامه چند مثال مختلف را برای روشنتر شدن این موضوع، بررسی میکنیم.
مثال اول: گرد کردن عدد با مقدار منفی در پارامتر Ndigits
در این مثال، دو عدد اعشار و صحیح مجزا از هم داده شدهاند. میخواهیم آنها را با کمک تابع round() گرد بکنیم. البته از مقادیر منفی در پارامتر Ndigits استفاده خواهیم کرد.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Number after rounding off: a = 70.0
Number after rounding off: b = 1200
با تابع round() و مقدار -1 برای Ndigits، عدد 67.764 را تا دهگان گرد میکنیم. نتیجه این عملیات مساوی با 70 است. سپس عدد 1212 را با مقدار -2 تا صدگان گرد میکنیم. نتیجه این عملیات هم باعث حذف رقمهای سمت راست شده و نتیجه 1200 میشود.
مثال سوم: استفاده از مقدار زیاد در Ndigits
در این مثال شماره داده شده به آرگومان Ndigits بزرگتر از تعداد ارقام پارامتر number است.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Number after rounding off: a = 0.0
Number after rounding off: b = 0
در مثال بالا ابتدا عدد اعشاری 67.7641 با استفاده از round() و مقدار منفی 3 تا سه رقم صحیح، گرد میشود. نتیجه این عملیات برابر با 0.0 است. سپس عدد 888 را تا ۵ رقم گرد میکنیم. گرد کردن آن تا ۱۰۰۰۰ باعث حذف تمام رقمها شده و نتیجه آن هم 0 میشود.
استفاده از تابع round در پایتون بر روی آرایههای Numpy
همینطور که از تابع round() برای گرد کردن اعداد معمولی در پایتون استفاده میشود، امکان بهکارگیری آن برای آرایههای Numpy نیز وجود دارد. البته باید توجه داشت که این تابع، شباهت اسمی با تابع round در پایتون دارد اما یکسان نیستند. یعنی برای استفاده از آن لازم است که ابتدا کتابخانه numpy را به محیط کدنویسی خود ایمپورت کنیم. کتابخانه Numpy یکی از کتابخانههای تخصصی پایتون برای انجام محاسبات عددی است. از این کتابخانه در حوزههایی مانند علم داده و دادهکاوی هم استفاده میشود. برای آشنایی با آن پیشنهاد میکنیم که مطلب مربوط به کتابخانه Numpy را در مجله فرادرس مطالعه کنید.
بعد از ایمپورت کردن کتابخانه numpy میتوانیم تابع مخصوص برای گرد کردن عناصر آرایه را از طریق این کتابخانه فراخوانی کنیم. سینتکس لازم برای استفاده از آن به صورت زیر است.
کد بالا به برنامه نویسان کمک میکند تمام اعداد موجود در آرایه input_array را با کمک یک خط کد تا میزان دقت مورد نیاز گرد کنند. در ادامه چند مثال مختلف را برای کمک به درک بهتر این موضوع بررسی کردهایم.
مثال اول: استفاده از تابع round بر روی آرایه Numpy
در این مثال، آرایهای از اعداد اعشاری مثبت و منفی داده شده است. باید همه آنها را تا دو رقم اعشار گرد بکنیم.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Rounded array is: [-0.34 1.46 4.23 -0.34 7.63 5.12]
در فهرست پایین، کدهای نوشته شده در کادر بالا را توضیح دادهایم.
- ابتدا کتابخانه numpy را وارد میکنیم.
- در خط ۴، آرایهای از اعداد اعشاری تعریف میکنیم.
- در خط ۶، با استفاده از تابع numpy.round() اعداد آرایه را تا ۲ رقم اعشار گرد میکنیم.
- در پایان نیز تمام عناصر گرد شده آرایه را چاپ میکنیم.

مثال دوم: رند کردن آرایه Numpy با مقدار منفی
در این مثال میخواهیم به آرگومان Ndigits در تابع round() مقدار منفی اختصاص بدهیم. این دستور را بر روی آرایه numpy اجرا خواهیم کرد.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Rounded array is: [10 20 30 40 20]
در این فهرست، کدهای نوشته شده در کادر بالا را توضیح دادهایم.
- در خط دوم: کتابخانه numpy را وارد میکنیم.
- در خط چهارم: لیستی از اعداد صحیح تعریف میکنیم. این تابع بر روی لیستهای معمولی هم مانند آرایههای پایتون کار میکند.
- در خط ششم: با تابع numpy.round() و مقدار -1، اعداد را به نزدیکترین رقم دهگان گرد میکنیم.
- در خط هشتم: آرایه گرد شده را چاپ میکنیم.

تابع round در پایتون و تابع Decimal
برای مدیریت دقیقتر مقادیر اعشاری به غیر از تابع round در پایتون میتوانیم از تابع Decimal هم استفاده بکنیم. برای استفاده از این تابع باید آن را از ماژول «decimal» به محیط کدنویسی ایمپورت کنیم. در زمان استفاده از ماژول decimal باید پارامتر مخصوصی را برای گرد کردن مشخص کنیم. این پارامتر به عنوان پرچم شناخته میشود. در واقع وظیفه «پرچم» این است که نوع گرد کردن را مشخص بکند. پرچمهای مختلف نمایانگر روشهای از پیشتعریف شده خاصی برای گرد کردن هستند.
در فهرست زیر، این پرچمها را نام بردهایم.
- ROUND_CEILING
- ROUND_DOWN
- ROUND_FLOOR
- ROUND_HALF_DOWN
- ROUND_HALF_EVEN
- ROUND_HALF_UP
- ROUND_UP
در جدول پایین به شکل خلاصه عملکرد این پرچمها را توضیح دادهایم.
| پرچم | نحوه گرد کردن | توضیح کوتاه |
|---|---|---|
| ROUND_CEILING | به سمت بینهایت مثبت | همیشه عدد را به مقدار بالاتر گرد میکند. |
| ROUND_DOWN | به سمت صفر | عدد مثبت را پایینتر و عدد منفی را بالاتر گرد میکند. |
| ROUND_FLOOR | به سمت بینهایت منفی | همیشه عدد را به مقدار پایینتر گرد میکند. |
| ROUND_HALF_DOWN | «نزدیکترین عدد» و «گره به سمت صفر» | در حالت گره، به سمت صفر گرد میشود. |
| ROUND_HALF_EVEN | نزدیکترین عدد زوج | در حالت گره، به نزدیکترین عدد زوج گرد میکند. |
| ROUND_HALF_UP | «نزدیکترین عدد» و «گره دور از صفر» | در حالت گره، از صفر فاصله میگیرد. |
| ROUND_UP | دور از صفر | عدد مثبت را بالاتر و عدد منفی را پایینتر گرد میکند. |
در ادامه تمام موارد بالا را یک به یک همراه با مثال بررسی میکنیم.
ROUND_CEILING
برای مشخص کردن این پرچم از کد rounding=decimal.ROUND_CEILING کمک میگیریم. پرچم ROUND_CEILING اعداد را به سمت بینهایت مثبت گرد میکند. استفاده از این پرچم باعث میشود که عدد داده شده همیشه به عدد صحیح در یک واحد بالاتر تبدیل شود.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Rounded number is: a = 288.82
نکته: با کمک کد decimal.Decimal('0.00') قالب خروجی (دو رقم اعشار) را مشخص کردهایم. از این تکنیک در تمام مثالهای بعدی هم استفاده شده است.
ROUND_DOWN
برای مشخص کردن این پرچم باید از کد rounding=decimal.ROUND_DOWN استفاده کنیم. وظیفه پرچم ROUND_DOWN آن است که اعداد را به سمت صفر گرد کند.

یعنی اگر عدد داده شده به تابع Decimal() مثبت باشد، آن را به کوچکترین عدد صحیح مجاز و اگر عدد منفی باشد آن را به بزرگترین عدد صحیح مجاز تبدیل میکند.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Rounded number is: a = 288.81
Rounded number is: b = -288.81
ROUND_FLOOR
برای مشخص کردن این پرچم از کد rounding=decimal.ROUND_FLOOR استفاده میکنیم. وظیفه پرچم ROUND_FLOOR آن است که اعداد را به سمت منفی بینهایت گرد بکند. یعنی همه اعداد مشخص شده به کوچکترین عدد مجاز تبدیل میشوند. تفاوت بین پرچمهای ROUND_FLOOR و ROUND_DOWN در زمان تبدیل کردن اعداد منفی مشخص میشود. پرچم ROUND_FLOOR عدد منفی داده شده را به کوچکترین عدد مجاز بعدی تبدیل میکند. اما پرچم ROUND_DOWN عدد منفی داده شده را به بزرگترین عدد مجاز بعدی تبدیل میکند.

با بررسی مثال زیر، بهتر میتوانید عملکرد این پرچم را درک کنید.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Rounded number is: a = 288.81
Rounded number is: b = -288.82
ROUND_HALF_DOWN
برای مشخص کردن این پرچم از کد rounding=decimal.ROUND_HALF_DOWN استفاده میکنیم. پرچم ROUND_HALF_DOWN عدد داده شده را به نزدیکترین عدد مجاز تبدیل میکند. اگر از این پرچم در موقعیت گره استفاده کنیم، عدد داده شده به سمت صفر گرد میشود.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Rounded number is: a = 287
ROUND_HALF_EVEN
برای مشخص کردن این پرچم از کد rounding=decimal.ROUND_HALF_EVEN استفاده میکنیم. پرچم ROUND_HALF_EVEN عدد داده شده را به نزدیکترین عدد مجاز گرد میکند. اگر از این پرچم در موقعیت گره استفاده کنیم، عدد داده شده به سمت نزدیکترین عدد زوج گرد میشود.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Rounded number is: a = 288
ROUND_HALF_UP
برای مشخص کردن این پرچم از کد rounding=decimal.ROUND_HALF_UP استفاده میکنیم. پرچم ROUND_HALF_UP عدد داده شده را به نزدیکترین عدد مجاز گرد میکند. اگر از این پرچم در موقعیت گره استفاده کنیم، عدد داده شده به سمت عدد مجاز دورتر از صفر گرد میشود. یعنی اگر گره بر روی اعداد مثبت اتفاق بیافتد، برای رسیدن به جواب باید آن عدد به سمت بزرگترترین عدد مجاز گرد شود. اما اگر گره بر روی اعداد منفی اتفاق بیافتد، برای رسیدن به جواب باید آن عدد به سمت کوچکترترین عدد مجاز گرد شود.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Rounded number is: a = 288
Rounded number is: b = -288
ROUND_UP
برای مشخص کردن این پرچم از کد rounding=decimal.ROUND_UP استفاده میکنیم. پرچم ROUND_UP اعداد داده شده را به سمت دور از صفر گرد میکند. این پرچم حتی با وجود گره هم کار خود را به همین ترتیب انجام میدهد. عملکرد این پرچم با اعداد مثبت مانند استفاده از تابع ceil() است. یعنی اعداد مثبت را به عدد مجاز بزرگتر بعدی تبدیل میکند. اعداد منفی هم به عدد مجاز کوچکتر بعدی گرد میشوند.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Rounded number is: a = 288
Rounded number is: b = -288
یادگیری بهتر مهارتها با اجرای پروژههای پایتون
بعد از آشنایی با مفاهیم اولیه پایتون و تکنیکهای حرفهای باید روش استفاده از آنها در پروژههای واقعی را بیاموزیم. یکی از بهترین تکنیکها برای کسب تجربه در این حوزه پیادهسازی پروژههای واقعی است. فرادرس برای کمک به دانشجویان و افراد علاقهمند به برنامه نویسی مجموعه کاملی از فیلمهای پروژهمحور پایتون را تولید و منتشر کرده است. فیلمهای این مجموعه برای پیادهسازی عملی پروژههای واقعی از مفاهیم پایه و مهارتهای پیشرفته برنامه نویسی استفاده میکنند. با مشاهده این فیلمها روش استفاده از دستورات پایتون را در کنار پیادهسازی الگوریتمهای عملیاتی یاد میگیرید.
در پایین، چند مورد از فیلمهای آموزش پروژهمحور زبان پایتون را معرفی کردهایم.
- فیلم آموزش پروژه محور پایتون درباره ایجاد QR Code و اسکن آن با ۴ کتابخانه Python
- فیلم آموزش پروژه محور پایتون درباره مدیریت فایل ها
- فیلم آموزش ساخت چت روم با سوکت نویسی در پایتون، Socket Programming در Python
- فیلم آموزش پروژه محور پایتون درباره طراحی ماشین حساب با Python
- فیلم آموزش پروژه محور پایتون درباره ساخت دستیار صوتی، از طراحی توابع تا اجرای برنامه
با کلیک بر روی تصویر زیر میتوانید به صفحه اصلی این مجموعه آموزشی، هدایت شده و فیلمهای پروژهمحور بیشتری را مشاهده کنید.

روش گرد کردن اعداد در جهت خلاف صفر
اگر با استفاده از تابع round در پایتون، بخواهیم مقداری بین -0.5 تا 0.5 را گرد کنیم پاسخ حتما برابر با صفر میشود. زیرا این تابع از قانون «Half To Even Rounding» پیروی میکند. یعنی مقدار داده شده به سمت نزدیکترین عدد صحیح گرد میشود. نزدیکترین عدد صحیح به این محدوده هم برابر با 0 است. برای حل کردن این مشکل و گرد کردن اعداد درون این محدوده به اعداد دور از صفر میتوانیم از روشهای زیر استفاده کنیم.
روش اول: افزودن ۰٫۵ واحد به مقدار مثبت
در زمان کار با اعداد مثبت میتوانیم به اندازه 0.5 واحد به آن مقدار اضافه بکنیم. انجام این کار تضمین میکند همیشه عدد داده شده به تابع، بزرگتر از 0.5 باشد. در نتیجه از گرد شدن عدد به صفر جلوگیری میشود.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Rounded number is: a = 0
Rounded number with rounding away from zero: a = 1
روش دوم: کم کردن ۰٫۵ واحد از اعداد منفی
در زمان کار با اعداد منفی درون این محدوده میتوانیم به اندازه 0.5 واحد از آنها کم کنیم. در نتیجه همیشه مقدار داده شده به تابع round() کمتر از -0.5 خواهد بود. بنابراین در صورت گرد کردن، جواب، صفر نمیشود.
بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده میشود.
Rounded number is: a = 0
Rounded number with rounding away from zero: a = -1
کاربردهای تابع round در پایتون
این تابع کاربردهای بسیار گسترده و مهمی دارد. در این بخش از مطلب، چند مورد از رایجترین کاربردهای تابع round() را نوشتهایم.
- گرد کردن عدد بر روی قبوض و فاکتورهای مالی: بیشتر اوقات مقادیر نمایش داده شده بر روی قبوض و فاکتورها از نوع عدد صحیح هستند. برای تبدیل کردن تمام هزینهها و اعداد به اعداد صحیح میتوانیم از تابع round() استفاده کنیم.
- گرد کردن دادههای علمی: به طور معمول دادههای عملی باید از میزان دقت بسیار بالایی برخوردار باشند. بنابراین لازم است در قالبهای ازپیشتعیین شدهای و با تعداد مشخصی ارقام صحیح و اعشاری نوشته شوند. با کمک تابع round() میتوان به این سطح از دقت رسید.
- مدیریت دادههای مهندسی: در علوم مهندسی برای استفاده از دادههای تئوری در دنیای واقعی باید تنظیمات مشخصی بر روی آنها اعمال شوند. تابع round() در این حوزه هم عملکرد خوبی از خودش نشان میدهد. در واقع دادههای ریاضی با تعداد رقم اعشار زیاد با کمک تابع round() برای استفاده در دنیای واقعی، اصلاح میشوند.

به طور کل از این تابع میتوان در سناریوهای زیر استفاده کرد.
- هر جایی که بخواهیم مقادیر مختلف عددی را به اعداد صحیح گرد کنیم.
- از تابع round در پایتون میتوانیم برای قرار دادن اعداد در قالب مناسب هم استفاده کنیم. برای مثال ممکن است در تمام خروجیها فقط به دو عدد اعشار نیاز داشته باشیم. اما ساختار محاسباتی برنامه طوری است که اعدادی با چندین رقم اعشار مختلف تولید میکند. در چنین شرایطی با استفاده از تابع round() تمام خروجیها را در قالب یکسان نمایش میدهیم.
- از این تابع میتوان برای گرد کردن تمام مقادیر ذخیره شده در آرایههای پایتون استفاده کرد. نمونه این کار را در بخش تابع round() در Numpy بررسی کردیم.
- با کمک این تابع حتی میتوانیم اعداد صحیح را هم به دادههایی با میزان دقت مورد نیاز خود تبدیل کنیم. برای نمونه در صورت نیاز میتوان ۲۵۲ را به ۲۵۰ گرد کرد.
| سناریو استفاده | هدف | توضیح کوتاه |
|---|---|---|
| گرد کردن اعداد | تبدیل به عدد صحیح | گرد کردن مقادیر عددی مختلف |
| یکسانسازی خروجیها | قالببندی دادهها | نمایش همه خروجیها با تعداد اعشار ثابت |
| مدیریت اعشار | کنترل دقت دادهها | برای مثال، نمایش فقط دو رقم اعشار |
| کار با آرایهها | پردازش دادهها | گرد کردن همه مقادیر داخل آرایه |
نکته: از تابع round() نمیتوان برای گرد کردن دادههای رشتهای به آرایهای از کاراکترها استفاده کرد. در صورت انجام این کار با پیغام خطا از سوی مفسر پایتون روبهرو میشویم.
جمعبندی
در این مطلب از مجله فرادرس، عملکرد تابع round در پایتون به طور کامل و جامعی بررسی شده است. این تابع یکی از توابع داخلی و مهم پایتون برای گرد کردن اعداد است. از آن در محاسبات ریاضی، مالی و علمی به شکل گسترده استفاده میشود. سینتکس آن round(number, ndigits) است. استفاده از پارامتر number الزامی است. این پارامتر همان عددی است که باید گرد شود. اما وجود پارامتر Ndigits اختیاری بوده و مقدار پیشفرض آن صفر است. این پارامتر میتواند مثبت (برای گرد کردن اعشار)، صفر یا منفی (برای گرد کردن به سمت چپ ممیز، مانند دهگان یا صدگان) باشد.
تابع round() عدد را به نزدیکترین مضرب از گرد میکند. در این تابع به طور پیشفرض از استراتژی «Half To Even» برای مدیریت حالتهای گره استفاده میشود. با کمک ماژول decimal میتوان از استراتژیهای گرد کردن متنوعی مانند ROUND_UP و ROUND_DOWN و ROUND_HALF_UP و غیره استفاده کرد. از کاربردهای اصلی آن میتوان به یکسانسازی خروجیها، گردکردن فاکتورهای مالی، مدیریت دادههای علمی و مهندسی و غیره اشاره کرد. در مجموع، round() ابزاری ساده اما قدرتمند برای کنترل دقت اعداد در برنامههای پایتون است.












