آموزش

نحوه گرد کردن اعداد تا ۲ رقم اعشار در پایتون

اینجا یاد می‌گیری چطور با استفاده از تابع‌های ()round و ()format و روش‌های مختلف قالب‌بندی رشته‌ها، اعداد رو در پایتون تا ۲ رقم اعشار گرد کنی و با دقت دلخواه نمایش بدی.

تاریخ انتشار:
15 شهریور 1405
پایتون
7 دقیقه
تحلیل داده
کاربرهای فینکا در چه شرکت‌هایی مشغول به کار هستند؟

گرد کردن اعداد تا ۲ رقم اعشار یه تکنیک مهم تو پایتون به حساب میاد. این کار مخصوصا تو محاسبات مالی، نمایش داده‌ها و گزارش‌های علمی خیلی به درد می‌خوره.

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

اگه تازه به عنوان تحلیل‌گر داده شروع به کار کردی، پیشنهاد می‌کنیم دوره مقدمه‌ای بر پایتون فینکا رو ببینی تا اصول پایتون رو برای کار با داده‌ها و تغییرشون یاد بگیری. همین‌طور اگه تو کارهای تحلیل داده نیاز داری آرایه‌های بزرگی از اعداد رو گرد کنی، آموزش NumPy در پایتون در فینکا می‌تونه برات خیلی مفید باشه.

خلاصه مطلب

  • از round(number, 2) برای گرد کردن ریاضی استفاده کن، این روش مقدار واقعی رو تغییر می‌ده.
  • از f"{number:.2f}" یا str.format() فقط برای نمایش عدد استفاده کن، مقدار شناور (float) اصلی تغییری نمی‌کنه.
  • وقتی به دقت اعشاری کامل و دقیق نیاز داری (مثل محاسبات مالی) از ماژول decimal استفاده کن.
  • از np.round(array, 2) استفاده کن تا کل یه آرایه numpy رو فقط با یه فراخوانی گرد کنی.
  • حواست به خطاهای دقت تو اعداد شناور باشه: round(2.675, 2) مقدار 2.67 رو برمی‌گردونه، نه 2.68. این موضوع به خاطر نحوه ذخیره شدن اعداد اعشاری تو حافظه‌ست.

درک مفهوم گرد کردن و ارقام اعشار

ارقام اعشاری به ارقامی می‌گن که مستقیما بعد از ممیز میان. این ارقام تو یه عدد خیلی مهمن چون میزان دقتش رو مشخص می‌کنن. هرچی تعداد ارقام اعشاری بیشتر باشه، عدد دقیق‌تره و برعکس.

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

پایتون روش‌های مختلفی برای گرد کردن اعداد تا ۲ رقم اعشار داره. تو ادامه با کمک مثال‌ها این تکنیک‌ها رو کامل توضیح می‌دیم.

استفاده از ()round برای گرد کردن عدد در پایتون

تابع round() یه تابع داخلی پایتونه که برای گرد کردن اعداد شناور به تعداد مشخصی از ارقام اعشار استفاده می‌شه. می‌تونی تعداد ارقام اعشار رو با دادن یه مقدار به عنوان آرگومان دوم مشخص کنی. مثال زیر عدد 34.15 رو تو خروجی چاپ می‌کنه.

خروجی
34.15

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

نکته‌ای درباره دقت اعداد اعشاری در تابع ()round

قبل از اینکه بخوای برای کدهای مالی به round() تکیه کنی، باید حواست به یه نکته ظریف باشه. این کد رو امتحان کن:

خروجی
2.67

نتیجه به جای 2.68 می‌شه 2.67. مقدار 2.675 نمی‌تونه دقیقا به شکل باینری تو اعداد اعشاری (استاندارد IEEE 754) ذخیره بشه؛ مقداری که تو حافظه می‌مونه یه کم از 2.675 کمتره، برای همین پایتون اونو به سمت پایین گرد می‌کنه.

اگه برای محاسبات مالی به گرد کردن دقیق نیاز داری، باید از ماژول decimal استفاده کنی و حالت گرد کردن رو صریحا مشخص کنی:

خروجی
2.68

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

تکنیک‌های قالب‌بندی رشته (String formatting) برای گرد کردن اعداد تا ۲ رقم اعشار خیلی مفیدن، مخصوصا وقتی که می‌خوای عدد رو تو خروجی نشون بدی.

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

گرد کردن با عملگر %

عملگر % یه روش قدیمی برای قالب‌بندی اعداد به حساب میاد. این عملگر بهت اجازه می‌ده با گذاشتن مقادیر تو متغیرهای جایگزین، رشته‌های قالب‌بندی‌شده بسازی.

تو مثال زیر، حرف f نشون می‌ده که مقدار از نوع عدد اعشاری (شناور) هست و .2 مشخص می‌کنه که عدد باید تا ۲ رقم اعشار گرد بشه.

خروجی
3.14

گرد کردن با متد ()str.format

متد str.format() روش منعطف‌تری برای تکنیک‌های پیچیده‌تر گرد کردن بهت می‌ده. از اونجا که این متد از متغیرهای نام‌دار استفاده می‌کنه، برنامه‌نویس‌ها معمولا این روش رو به عملگر % ترجیح می‌دن. تو مثال زیر، :.2f داخل آکولادها نوشته شده تا مشخص بشه عدد تا ۲ رقم اعشار گرد می‌شه. خروجی این کد مقدار 3.14 می‌شه.

خروجی
3.14

گرد کردن با استفاده از f-string (در پایتون ۳.۶ و بالاتر)

قابلیت f-string تو پایتون ۳.۶ اضافه شد و الان بهترین راه برای گذاشتن مقادیر داخل رشته‌هاست. سینتکس f-string مخصوصا برای گرد کردن، کد خیلی تمیزی بهت می‌ده: می‌تونی قالب‌بندی رو تو همون خط و بدون فراخوانی‌های جداگانه انجام بدی. اجرای کد زیر مقدار 14.68 رو برمی‌گردونه.

خروجی
14.68

تابع ()format برای گرد کردن عدد در پایتون

تابع داخلی format() یه مقدار و یه قالب خاص رو می‌گیره و در نهایت یه رشته قالب‌بندی‌شده بهت برمی‌گردونه. برخلاف متد str.format()، اینجا عدد رو مستقیم به تابع می‌دی به جای اینکه داخل یه رشته قرارش بدی. کد زیر عدد 345.69 رو تو خروجی چاپ می‌کنه.

خروجی
345.69

استفاده از ماژول‌های دیگه برای گرد کردن عدد در پایتون

علاوه بر توابع داخلی پایتون، ماژول‌های مختلفی هم هستن که می‌تونی برای گرد کردن اعداد ازشون استفاده کنی. تو ادامه ۳ تا از مهم‌ترینِ این ماژول‌ها رو معرفی می‌کنیم: math، decimal و numpy.

گرد کردن با کمک ماژول math

ماژول math به طور مستقیم تابعی نداره که اعداد رو تا تعداد خاصی اعشار گرد کنه. با این حال، می‌تونی با ترکیب توابع math و یه سری عملیات‌های ریاضی، عدد رو تا ۲ رقم اعشار گرد کنی.

تابع math.floor() برای گرد کردن عدد به سمت پایین و نزدیک‌ترین عدد صحیح استفاده می‌شه. برای اینکه عدد رو تا ۲ رقم اعشار به پایین گرد کنی، کافیه اونو تو ۱۰۰ ضرب کنی، تابع math.floor() رو روش اعمال کنی و بعد جواب رو بر ۱۰۰ تقسیم کنی. کد پایین مقدار 3.14 رو چاپ می‌کنه.

خروجی
3.14

به همین ترتیب، تابع math.ceil() برای گرد کردن به سمت بالا (به نزدیک‌ترین عدد صحیح) کاربرد داره. برای گرد کردن به بالا تا ۲ رقم اعشار، عدد رو ضرب‌در ۱۰۰ کن، تابع math.ceil() رو روش اجرا کن و در نهایت بر ۱۰۰ تقسیم کن. اجرای کد زیر خروجی 3.15 رو برات چاپ می‌کنه.

خروجی
3.15

گرد کردن با کمک ماژول decimal

ماژول decimal تو پایتون با استفاده از متد .quantize()، ابزار خیلی مفیدی برای گرد کردن دقیق اعداد اعشاری به حساب میاد. تو مثال زیر، میزان دقت رو روی 0.01 تنظیم می‌کنیم تا به برنامه بفهمونیم می‌خوایم عدد تا ۲ رقم اعشار گرد بشه.

خروجی
18.74

اگه دنبال روش‌های خاصی برای گرد کردن به سمت بالا می‌گردی، پیشنهاد می‌کنیم آموزش جدید ما تو فینکا رو با عنوان نحوه گرد کردن عدد به سمت بالا در پایتون بخونی. اونجا مفصل در مورد استفاده از math و decimal و تکنیک‌های دیگه صحبت کردیم تا مطمئن بشی عدد همیشه به سمت بالا گرد می‌شه. همین‌طور اگه دوست داری کلا مبحث تغییر و تبدیل داده‌ها رو بهتر یاد بگیری، مسیر شغلی تحلیل‌گر داده با پایتون فینکا رو ببین تا مهارت‌های تحلیلیت رو حسابی ارتقا بدی.

گرد کردن به کمک کتابخونه NumPy

وقتی داری روی آرایه‌ها تو numpy کار می‌کنی، از np.round() استفاده کن تا همه مقادیر رو یک‌جا گرد کنی. این روش خیلی سریع‌تر و خواناتر از نوشتن یه حلقه دستی روی تک‌تک مقادیره.

خروجی
[1.23 9.88 3.14]

تابع np.round() از همون قانون گرد کردن نیم به سمت عدد زوج استفاده می‌کنه که تابع round() داخلی پایتون به کار می‌بره. متد .round() تو دیتافریم‌ها و سری‌های pandas هم دقیقا همین‌طوری کار می‌کنه:

خروجی
     price  price_rounded
0   1.2345           1.23
1   9.8765           9.88
2  3.14159           3.14

برای بررسی دقیق‌تر تبدیل داده‌ها با استفاده از pandas، می‌تونی به آموزش pandas ما یه نگاهی بندازی.

چه زمانی از کدوم روش گرد کردن در پایتون استفاده کنیم؟

اینجا یه راهنمای سریع برات آماده کردیم تا راحت‌تر روش مناسب رو انتخاب کنی:

متد بهترین کاربرد آیا مقدار رو تغییر می‌ده؟ خروجی
round(x, 2) محاسبات ریاضی عمومی بله float
f"{x:.2f}" نمایش / چاپ خیر str
str.format() نمایش / چاپ خیر str
 %عمگر نمایش / چاپ (روش قدیمی) خیر str
format(x, ".2f") نمایش / مقدار تکی خیر str
math.floor() / ceil() همیشه به پایین / بالا گرد می‌کنه بله float
Decimal.quantize() مالی / اعشار دقیق بله Decimal
np.round(arr, 2) آرایه‌های numpy بله ndarray

اینم چندتا قانون سرانگشتی برای اینکه راحت‌تر تصمیم بگیری:

  • فقط می‌خوای یه عدد رو نمایش بدی؟ از یه رشته f-string (مثل f"{x:.2f}") استفاده کن. فقط یه خطه، نیازی به وارد کردن نداره و هیچ تاثیری هم روی مقدار اصلی نمی‌ذاره.
  • قراره با نتیجه محاسبات ریاضی انجام بدی؟ از round(x, 2) استفاده کن. یه عدد اعشاری برمی‌گردونه که می‌تونی بازم برای محاسبات ازش استفاده کنی.
  • داری کدهای مالی یا حسابداری می‌نویسی؟ از Decimal.quantize() استفاده کن. با ماژول decimal دیگه مشکلات دقت شناور (مثل round(2.675, 2) == 2.67) پیش نمیاد.
  • نیاز داری همیشه رو به بالا یا همیشه رو به پایین گرد کنی؟ از math.ceil() یا math.floor() استفاده کن. اونا قوانین معمول گرد کردن رو کاملا نادیده می‌گیرن.
  • داری روی یه آرایه numpy یا ستونی از pandas کار می‌کنی؟ از np.round(arr, 2) یا series.round(2) استفاده کن. هر دوی این روش‌ها می‌تونن کل دیتاست رو هم‌زمان مدیریت کنن.
  • داری کدهای قدیمی رو به‌روزرسانی می‌کنی؟ عملگر % هنوز هم کار می‌کنه، اما از پایتون ۳.۶ به بعد، قابلیت f-strings جایگزینش شده. بهتره تو کدهای جدید فقط از اونا استفاده کنی.

سخن پایانی

گرد کردن اعداد تا ۲ رقم اعشار یه تکنیک ضروری برای رسیدن به دقت بالا تو محاسبات مالی و علمیه. تو این مقاله روش‌های مختلفی رو برای گرد کردن اعداد تا ۲ رقم اعشار معرفی کردیم، از جمله توابع داخلی، متدهای قالب‌بندی رشته و همین‌طور ماژول math. خیلی مهمه که بسته به نیازت مثل میزان دقت لازم و سبک نمایش، روش درست رو انتخاب کنی. پیشنهاد می‌کنیم این روش‌ها رو با مثال‌های مختلف تمرین کنی تا بهتر متوجه بشی کدوم یکی برای کارت مناسب‌تره.

اگه دوست داری مهارت‌های پایتونت رو پیشرفته‌تر کنی، مسیر مهارتی برنامه‌نویسی پایتون فینکا رو ببین که توش توابع، دکوراتورها و الگوهای پیشرفته پایتون آموزش داده می‌شن. مسیر شغلی توسعه‌دهنده پایتون ما هم برای این طراحی شده که بهت کمک کنه به عنوان یه توسعه‌دهنده رشد کنی و هم‌زمان با الگوریتم‌ها و ساختارهای داده پیشرفته آشنا بشی.

اشتراک‌گذاری
فهرست مطالب
  • خلاصه مطلب
  • درک مفهوم گرد کردن و ارقام اعشار
  • استفاده از ()round برای گرد کردن عدد در پایتون
  • استفاده از تکنیک‌های قالب‌بندی رشته برای گرد کردن عدد تو پایتون
  • تابع ()format برای گرد کردن عدد در پایتون
  • استفاده از ماژول‌های دیگه برای گرد کردن عدد در پایتون
  • چه زمانی از کدوم روش گرد کردن در پایتون استفاده کنیم؟
  • سخن پایانی

سوالات متداول

ساده‌ترین راه برای گرد کردن یه عدد تا ۲ رقم اعشار، استفاده از تابع داخلی round() هست.

روش پیش‌فرض تابع round()، گرد کردن نیم (0.5) به سمت عدد زوجه. برای گرد کردن یه عدد تا ۲ رقم اعشار، باید آرگومان دوم این تابع رو برابر با 2 بذاری، مثل round(3.14159, 2).

تابع format() برای گرد کردن یه عدد به تعداد مشخصی از ارقام اعشار و نمایشش داخل یه رشته قالب‌بندی‌شده استفاده می‌شه.

گرد کردن نیم (0.5) به سمت عدد زوج یعنی وقتی یه عدد دقیقا وسط دو تا عدد صحیح قرار می‌گیره، به نزدیک‌ترین عدد صحیح زوج گرد می‌شه.

برای گرد کردن یه عدد به تعداد مشخصی از ارقام اعشار با ماژول math، باید توابع math.floor() و math.ceil() رو با بقیه عملیات‌های ریاضی ترکیب کنی.

دریافت اپلیکیشن فینکا

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