تابع Round در پایتون چیست؟ – به زبان ساده + مثال

۱۰
۱۴۰۴/۱۰/۷
۱۸ دقیقه
PDF
آموزش متنی جامع
امکان دانلود نسخه PDF

تابع round یکی از توابع درونی زبان برنامه نویسی پایتون است. از این تابع برای گرد کردن اعداد صحیح و اعشاری استفاده می‌شود. حتی می‌توانیم تعداد رقم اعشار یا صحیح را برای گرد کردن مشخص بکنیم. تابع round در پایتون جزو توابع مهم در محاسبات ریاضی و مالی است. برای مثال می‌خواهیم درصد سود خود را بعد از انجام عملیات مالی به‌دست بیاوریم. ممکن است که درصد سود برابر با عددی مانند ۵٫۱۲۸۷۶ بشود. ما می‌دانیم که ارقام این عدد بعد از رقم دوم اعشار، ارزش چندانی ندارند. با کمک تابع round()  و تخصیص مقدار درست به پارامتر دوم آن می‌توانیم این عدد را به ۵٫۱۳ تبدیل کنیم. بنابراین انجام محاسبات ساده‌تر و سریع‌تر می‌شود.

آنچه در این مطلب می‌آموزید:
  • با تابع round در پایتون و کاربرد آن در محاسبات عددی و امور مالی آشنا می‌شوید.
  • روش نوشتن دستور تابع round را در کنار استفاده صحیح از پارامتر‌های آن می‌آموزید.
  • یاد می‌گیرید که چطور با کمک Ndigits اعداد اعشاری و صحیح را به مقدار مورد نیاز گرد کنید.
  • با حالت تساوی یا گره (Tie) آشنا شده و روش مدیریت آن را یاد می‌گیرید.
  • روش کار با تابع round در پایتون را برای گرد کردن عناصر آرایه Numpy می‌آموزید.
  • با تابع Decimal و کاربرد پرچم‌های آن برای گردن کردن اعداد آشنا می‌شوید.
تابع Round در پایتون چیست؟ – به زبان ساده + مثالتابع Round در پایتون چیست؟ – به زبان ساده + مثال
فهرست مطالب این نوشته
997696

در این مطلب از مجله فرادرس با تابع round در پایتون آشنا می‌شویم. ابتدا سینتکس آن را توضیح داده و پارامتر‌های مختلف را نام می‌بریم. سپس با کمک مثال‌های متنوع روش کار با آن را بررسی می‌کنیم. بعد از آن روش استفاده از ماژول «Decimal» برای اجرای تکنیک‌های مختلف گرد کردن را توضیح داده‌ایم. در نهایت هم چند کاربرد رایج این تابع را معرفی می‌کنیم.

تابع round در پایتون چیست؟

در زبان برنامه نویسی پایتون از تابع round()  برای گرد کردن ارقام اعشاری استفاده می‌شود. این تابع، قابلیت تنظیم دارد. یعنی می‌توانیم اعلام کنیم برای مثال تا ۳ رقم اعشار را گرد کند. فرض کنیم به فروشگاهی رفته و چند کالای مختلف خریداری کرده‌ایم. فاکتور صادر شده برای این خرید تا ۲ رقم اعشار واحد پولی را نشان می‌دهد. برای رند کردن این اعداد در سیستم‌های حسابداری می‌توان از تابع round()  کمک گرفت.

تعداد ارقام اعشار بعد از ممیز را می‌‌توان برای تابع round()  مشخص کرد. به عنوان نمونه می‌توانیم عدد ۶۵٫۲۳۴ را به عدد ۶۵٫۲ تبدیل بکنیم. این تابع یکی از توابع توکار پایتون است. بنابراین در زمان استفاده از آن نیاز به ایمپورت (Import) کردن هیچ کتابخانه‌ای نداریم.

تا به اینجای مطلب شناخت کلی از تابع round در پایتون بدست آورده‌اید. در ادامه با سینتکس آن آشنا شده و چند مثال متنوع از کار با این تابع را بررسی می‌کنید. در صورت تمایل به مطالعه مطالب مرتبط با برنامه‌نویسی، پیشنهاد می‌کنیم که حتما اپلیکیشن مجله فرادرس را نصب کنید.

برای نصب اپلیکیشن رایگان مجله فرادرس، کلیک کنید.

سینتکس تابع round در پایتون

در کادر پایین، سینتکس مورد استفاده برای نوشتن تابع round()  را نوشته‌ایم.

در این سینتکس، دو پارامتر اصلی وجود دارند. این پارامتر‌ها را در فهرست پایین معرفی می‌کنیم.

  • number : این پارامتر همان عددی را نشان می‌دهد که باید گرد شود. وجود پارامتر number الزامی است. این عدد می‌تواند از هر نوعی مانند عدد صحیح یا Float باشد. ننوشتن این پارامتر باعث اعلام خطا در پایتون می‌شود. علاوه بر آن، در صورت ارسال داده‌هایی با انواع نامناسب (داده‌هایی که تابع round()  پشتیبانی نمی‌کند)، باز هم برنامه خطا می‌دهد. برای مثال در صورت ارسال عدد با نوع رشته مانند '203'  برنامه پیغام خطای TypeError  برمی‌گرداند.
  • Ndigits : این پارامتر تعداد رقم‌های بعد از ممیز را نشان می‌دهد. در واقع می‌گوید که عدد مورد نظر باید تا چند رقم اعشار گرد شود. وجود این پارامتر اختیاری است. در نتیجه می‌توانیم از نوشتن آن صرف نظر کنیم. در صورت ننوشتن این پارامتر، مفسر پایتون پیغام خطا نمی‌دهد. بلکه عدد دریافت شده را بدون رقم اعشار، گرد می‌کند. مقدار پیش‌فرض این پارامتر برابر با 0 است. هر عدد صحیحی از قبیل اعداد مثبت، منفی و ۰ را می‌توان به عنوان ورودی به پارامتر Ndigitsاختصاص داد.
سینتکس تابع round در پایتون
پارامتر‌های تابع round در پایتون

مقدار برگشت داده شده توسط تابع round در پایتون

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

خانوم معلم بر روی تخته‌سیاه روش کار تابع round در پایتون را توضیح می‌دهد.

بر اساس مستندات رسمی پایتون، وظیفه تابع round()  گرد کردن عدد داده شده است. این تابع، عدد مورد نظر را به نزدیک‌ترین مضرب ۱۰ به توان منفی Ndigitsگرد می‌کند. فرمول آن را می‌توان به صورت زیر نوشت.

10Ndigits10^{-Ndigits}

اگر عدد ورودی از نوع «عدد صحیح» (Integer) باشد، خروجی تابع نیز از نوع اعداد صحیح خواهد بود. اما اگر عدد ورودی از نوع اعداد با ممیز شناور یا اعشاری باشد، نوع عدد خروجی به پارامتر Ndigitsبستگی دارد. اگر مقداری برای Ndigitsدر نظر نگرفته باشیم، در خروجی عددی با نوع صحیح برمی‌گردد. در غیر این صورت، عدد خروجی به اندازه مشخص شده در این پارامتر، رقم اعشار خواهد داشت.

نوع ورودیNdigitsنوع و توضیح خروجی
عدد صحیحنداردعدد صحیح (همان عدد)
عدد صحیحداردعدد صحیح (گرد شده به نزدیک‌ترین مضرب 10Ndigits10^{-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 – مقدماتی تا پیشرفته فرادرس
با کلیک بر روی تصویر بالا می‌توانید به صفحه اصلی مجموعه فیلم‌های آموزش برنامه نویسی پایتون Python از مقدماتی تا پیشرفته هدایت شوید.

استفاده از فیلم‌های آموزشی استاندارد یکی از راه‌های دسترسی به مربیان حرفه‌ای و آموزش‌های منظم و هدفمند است. استفاده از چنین منابعی تاثیر زیادی در یادگیری حرفه‌ای و رشد صحیح و سریع مهارت‌ها دارد. فرادرس یکی از بهترین منابع تولید فیلم‌های آموزشی استاندارد و باکیفیت است. فیلم‌های فرادرس با کمک اساتید باتجربه، تکنیک‌های مدرن و جدید را آموزش می‌دهند. در این فیلم‌ها از نکات ساده تا بخش‌های بسیار پیشرفته‌‌ مانند شبکه‌های عصبی و یادگیری ماشین آموزش داده شده‌اند.

در پایین، چند مورد از فیلم‌های مربوط به آموزش زبان پایتون را معرفی کرده‌ایم.

رند کردن اعداد صحیح

استفاده از تابع round()  تاثیر قابل توجهی بر روی اعداد صحیح ندارد. مقدار اعداد صحیح فقط وقتی تغییر می‌کند که پارامتر Ndigitsکمتر از صفر باشد. در این صورت، ارقام با ارزش مکانی کم‌تر گرد می‌شوند. در نتیجه دقت عدد کاهش پیدا می‌کند. برای مثال اگر عدد ۶۵۲ را با مقدار ۱- گرد کنیم، خروجی برابر با ۶۵۰ می‌شود.

نموداری برای نشان دادن استفاده از مقادیر مختلف پارامتر Ndigits در زمان گرد کردن اعداد
استفاده از مقادیر مختلف پارامتر Ndigits در زمان گرد کردن اعداد

به منظور روشن‌تر شدن این مطلب، در ادامه چند مثال مختلف را بررسی می‌کنیم.

مثال اول: رند کردن عدد صحیح با مقدار مثبت Ndigits

در این مثال، عدد صحیح به تابع round()  داده شده است. به پارامتر Ndigitsهم عدد مثبت اختصاص می‌دهیم.

بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده می‌شود.

Number after rounding off: a = 888

مثال دوم: رند کردن عدد صحیح با مقدار صفر برای Ndigits

در این مثال می‌خواهیم عدد صحیحی را گرد بکنیم. مقدار پارامتر Ndigitsرا برابر با 0  قرار می‌دهیم. مقدار پارامتر Ndigitsدر این مثال، هیچ تاثیری بر روی عدد داده شده به تابع round()  نمی‌گذارد.

بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده می‌شود.

Number after rounding off: a = 888

همین‌طور که در مثال‌های بالا مشاهده کردید، مقدار مثبت یا صفر در پارامتر Ndigitsبر روی عدد صحیح ارسال شده به تابع round()  هیچ تاثیری ندارد.

دانشجویی در حال توضیح 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باعث می‌شود ارقام سمت راست عدد صحیح، اهمیت خود را از دست داده و مقدار آن‌ها برابر با صفر قرار گیرد.

یک حلقه فاکتور مالی که بر روی ان کلمه python نوشته شده است.

در ادامه چند مثال مختلف را برای روشن‌تر شدن این موضوع، بررسی می‌کنیم.

مثال اول: گرد کردن عدد با مقدار منفی در پارامتر 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]

در فهرست پایین، کدهای نوشته شده در کادر بالا را توضیح داده‌ایم.

  1. ابتدا کتابخانه numpy را وارد می‌کنیم.
  2. در خط ۴، آرایه‌ای از اعداد اعشاری تعریف می‌کنیم.
  3. در خط ۶، با استفاده از تابع numpy.round() اعداد آرایه را تا ۲ رقم اعشار گرد می‌کنیم.
  4. در پایان نیز تمام عناصر گرد شده آرایه را چاپ می‌کنیم.
استفاده از تابع round برای رند کردن اعداد نوشته شده در فاکتور مالی

مثال دوم: رند کردن آرایه Numpy با مقدار منفی

در این مثال می‌خواهیم به آرگومان Ndigitsدر تابع round()  مقدار منفی اختصاص بدهیم. این دستور را بر روی آرایه numpy  اجرا خواهیم کرد.

بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده می‌شود.

Rounded array is:  [10 20 30 40 20]

در این فهرست، کدهای نوشته شده در کادر بالا را توضیح داده‌ایم.

  1. در خط دوم:‌ کتابخانه numpy  را وارد می‌کنیم.
  2. در خط چهارم: لیستی از اعداد صحیح تعریف می‌کنیم. این تابع بر روی لیست‌های معمولی هم مانند آرایه‌های پایتون کار می‌کند.
  3. در خط ششم: با تابع numpy.round() و مقدار ‎-1‎، اعداد را به نزدیک‌ترین رقم ده‌گان گرد می‌کنیم.
  4. در خط هشتم: آرایه گرد شده را چاپ می‌کنیم.
فلوچارت مربوط به رند کردن آرایه Numpy با مقدار منفی
فلوچارت مربوط به رند کردن آرایه Numpy با مقدار منفی

تابع 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  عدد منفی داده شده را به بزرگ‌ترین عدد مجاز بعدی تبدیل می‌کند.

تاثیر استفاده از پرچم ROUND_FLOOR بر روی اعداد مختلف
تاثیر استفاده از پرچم ROUND_FLOOR بر روی اعداد مختلف

با بررسی مثال زیر، بهتر می‌توانید عملکرد این پرچم را درک کنید.

بعد از اجرای کدهای بالا، خروجی زیر در کنسول پایتون نمایش داده می‌شود.

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

یادگیری بهتر مهارت‌ها با اجرای پروژه‌های پایتون

بعد از آشنایی با مفاهیم اولیه پایتون و تکنیک‌های حرفه‌ای باید روش استفاده از آن‌ها در پروژه‌های واقعی را بیاموزیم. یکی از بهترین تکنیک‌ها برای کسب تجربه در این حوزه پیاده‌سازی پروژه‌های واقعی است. فرادرس برای کمک به دانشجویان و افراد علاقه‌مند به برنامه نویسی مجموعه‌ کاملی از فیلم‌های پروژه‌محور پایتون را تولید و منتشر کرده است. فیلم‌های این مجموعه برای پیاده‌سازی عملی پروژه‌های واقعی از مفاهیم پایه و مهارت‌های پیشرفته برنامه نویسی استفاده می‌کنند. با مشاهده این فیلم‌ها روش استفاده از دستورات پایتون را در کنار پیاده‌سازی الگوریتم‌های عملیاتی یاد می‌گیرید.

در پایین، چند مورد از فیلم‌‌های آموزش پروژه‌محور زبان پایتون را معرفی کرده‌ایم.

با کلیک بر روی تصویر زیر می‌توانید به صفحه اصلی این مجموعه آموزشی، هدایت شده و فیلم‌های پروژه‌محور بیشتری را مشاهده کنید.

مجموعه آموزش پروژه محور برنامه نویسی پایتون (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()  تمام خروجی‌ها را در قالب یکسان نمایش می‌دهیم.
  • از این تابع می‌‌توان برای گرد کردن تمام مقادیر ذخیره شده در آرایه‌های پایتون استفاده کرد. نمونه این کار را در بخش تابع round()  در Numpy بررسی کردیم.
  • با کمک این تابع حتی می‌توانیم اعداد صحیح را هم به داده‌هایی با میزان دقت مورد نیاز خود تبدیل کنیم. برای نمونه در صورت نیاز می‌توان ۲۵۲ را به ۲۵۰ گرد کرد.
سناریو استفادههدفتوضیح کوتاه
گرد کردن اعدادتبدیل به عدد صحیحگرد کردن مقادیر عددی مختلف
یکسان‌سازی خروجی‌هاقالب‌بندی داده‌هانمایش همه خروجی‌ها با تعداد اعشار ثابت
مدیریت اعشارکنترل دقت داده‌هابرای مثال، نمایش فقط دو رقم اعشار
کار با آرایه‌هاپردازش داده‌هاگرد کردن همه مقادیر داخل آرایه

نکته: از تابع round()  نمی‌توان برای گرد کردن داده‌های رشته‌ای به آرایه‌ای از کاراکتر‌ها استفاده کرد. در صورت انجام این کار با پیغام خطا از سوی مفسر پایتون روبه‌رو می‌شویم.

جمع‌بندی

در این مطلب از مجله فرادرس، عملکرد تابع round در پایتون به طور کامل و جامعی بررسی شده است. این تابع یکی از توابع داخلی و مهم پایتون برای گرد کردن اعداد است. از آن در محاسبات ریاضی، مالی و علمی به شکل گسترده استفاده می‌شود. سینتکس آن round(number, ndigits)  است. استفاده از پارامتر number الزامی است. این پارامتر همان عددی است که باید گرد شود. اما وجود پارامتر Ndigitsاختیاری بوده و مقدار پیش‌فرض آن صفر است. این پارامتر می‌تواند مثبت (برای گرد کردن اعشار)، صفر یا منفی (برای گرد کردن به سمت چپ ممیز، مانند ده‌گان یا صدگان) باشد.

تابع round()  عدد را به نزدیک‌ترین مضرب از 10ndigits10^{-ndigits} گرد می‌کند. در این تابع به طور پیش‌فرض از استراتژی «Half To Even» برای مدیریت حالت‌های گره استفاده می‌‌شود. با کمک ماژول decimal  می‌توان از استراتژی‌های گرد کردن متنوعی مانند ROUND_UP  و ROUND_DOWN  و ROUND_HALF_UP  و غیره استفاده کرد. از کاربردهای اصلی آن می‌توان به یکسان‌سازی خروجی‌ها، گردکردن فاکتورهای مالی، مدیریت داده‌های علمی و مهندسی و غیره اشاره کرد. در مجموع، round()  ابزاری ساده اما قدرتمند برای کنترل دقت اعداد در برنامه‌های پایتون است.

بر اساس رای ۰ نفر
آیا این مطلب برای شما مفید بود؟
اگر پرسشی درباره این مطلب دارید، آن را با ما مطرح کنید.
منابع:
SCALER
PDF
مطالب مرتبط
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *