وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

گرد کردن اعشار در پایتون

0 486
زمان لازم برای مطالعه: 6 دقیقه


معرفی

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

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

با استفاده از گرد() تابع

اولین رویکرد برای گرد کردن اعشار در پایتون که در این مقاله به آن خواهیم پرداخت، استفاده از round() تابع. این یک تابع داخلی پایتون است که به شما امکان می دهد اعداد را به تعداد مشخصی از رقم اعشار گرد کنید. دو استدلال می خواهد – number و ndigits:

round(number, ndigits=None)

این number آرگومان عدد اعشاری است که می خواهید گرد کنید و ndigits آرگومان (اختیاری) تعداد ارقام اعشاری برای گرد کردن را مشخص می کند.

توجه داشته باشید: اگر ndigits مشخص نشده است، round() عدد را به عدد گرد خواهد کرد نزدیکترین عدد صحیح.

حال بیایید به یک مثال ساده نگاهی بیندازیم. فرض کنید عدد اعشاری زیر را داریم:

x = 3.14159

و بگوییم می خواهیم گرد کنیم x تا دو رقم اعشار ما استفاده خواهیم کرد round() عملکرد با ndigits تنظیم کنید 2:

rounded_x = round(x, 2)

این rounded_x متغیر اکنون مقدار را نگه می دارد 3.14، همانطور که انتظار میرفت.

گرد کردن موارد نیمه راه

همه چیز خوب است، اما اگر بخواهیم هر یک از آنها را گرد کنیم چه می شود موارد نیمه راه (اعدادی که به .5). در آن صورت، round() تابع از a استفاده می کند الگوریتم “نیم تا زوج گرد”.. این بدان معنی است که تابع به نزدیکترین عدد زوج گرد می شود. مثلا، round(2.5) به پایین گرد خواهد شد 2، وround(3.5) گرد خواهد شد 4.

توجه داشته باشید: شایان ذکر است که این رفتار هنگام گرد کردن مجموعه‌های بزرگ اعداد می‌تواند منجر به نتایج غیرمنتظره شود. اگر می‌خواهید مجموعه بزرگی از اعداد را گرد کنید و می‌خواهید از تعصب نسبت به اعداد زوج جلوگیری کنید، ممکن است بخواهید از روش گرد کردن دیگری استفاده کنید.

گرد کردن اعداد ممیز شناور

به طور پیش فرض، بیشتر اعداد اعشاری در پایتون به صورت داخلی ذخیره می شوند float نوع داده. یعنی اعداد اعشاری در واقع به عنوان اعداد ممیز شناور ذخیره می شوند. این روش برای ذخیره اعداد اعشاری برای تقریب اعداد واقعی که می خواهید ذخیره کنید به دلیل محدودیت های ماهیت گسسته رایانه ها به طور کلی شناخته شده است. به این معنی که تعداد نامتناهی اعداد اعشاری باید به نوعی به عنوان آرایه ای از اعداد معین بیت (صفر و یک) ذخیره شود.

برای نشان دادن آن، اجازه دهید نگاهی به عدد اعشاری زیر بیندازیم:

x = 3.175

منصفانه است که فرض کنیم اگر این عدد را به 2 رقم اعشار گرد کنیم، عدد حاصل می شود 3.18، درست؟

rounded_x = round(x, 2)
print(rounded_x)

اما، همانطور که از خروجی می بینیم، در واقع اینطور نیست:

3.17

این نشان دهنده مشکلاتی است که هنگام کار با اعداد ممیز شناور به طور کلی با آن روبرو هستیم – همه اعداد به طور دقیق ذخیره نمی شوند. در این مثال، شماره 3.175 در واقع به عنوان ذخیره شد 3.17499999999999982236431605997495353221893310546875 که توضیح می دهد که چرا به پایین گرد شده است 3.17 بجای 3.18، که انتظارش را داشتیم.

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

در کل، round() تابع مطمئناً رایج‌ترین روش برای گرد کردن ارقام در پایتون است و معمولاً برای بیشتر موارد استفاده مناسب است. با این حال، اگر به کنترل بیشتری روی روش گرد کردن نیاز دارید، ممکن است بخواهید از آن استفاده کنید decimal ماژول یا format() روش به جای

با استفاده از قالب () روش

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

توجه داشته باشید: بدیهی است که اگر می‌خواهید واقعاً با اعداد کار کنید، این ایده‌آل نیست، اما اگر بخواهید عدد گرد خود را به روشی خاص نمایش دهید، می‌تواند رویکردی عالی باشد.

حال، بیایید نگاهی به نحو آن بیاندازیم format() روش:

"{:.nf}".format(number)

این n بخش تعداد ارقام اعشاری را که می‌خواهیم گرد کنیم را مشخص می‌کند. این number آرگومان عدد اعشاری است که می خواهید گرد کنید.

همان عدد اعشاری را که در قسمت قبل استفاده کردیم در نظر بگیرید:

x = 3.14159

بیایید استفاده کنیم format() گرد کردن x تا دو رقم اعشار:

rounded_x = "{:.2f}".format(x)

این rounded_x متغیر اکنون مقدار را نگه می دارد 3.14.

مثال ها

نگاهی به چند مثال دیگر از استفاده از format() روش گرد کردن اعشار:


x = 3.14159
rounded_x = "{:.0f}".format(x)



x = 3.14159
rounded_x = "{:.1f}".format(x)



x = 3.14159
rounded_x = "{:.2f}".format(x)

یکی مزیت – فایده – سود – منفعت استفاده از format() روش بیش از round() عملکرد این است که می توانید قالب بندی عدد گرد شده را با دقت بیشتری کنترل کنید. می توانید استفاده کنید format() روشی برای اضافه کردن صفرهای پیشرو، کاما برای هزاران جداکننده و سایر گزینه های قالب بندی.

از سوی دیگر، format() روش مقداری دارد محدودیت ها. به عنوان مثال، ممکن است همیشه هنگام گرد کردن موارد در نیمه راه، نتیجه مورد انتظار را ایجاد نکند، و ممکن است برای مجموعه های بزرگ اعداد مناسب نباشد. در این موارد، احتمالاً باید استفاده از آن را در نظر بگیرید decimal در عوض ماژول

با استفاده از اعشاری مدول

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

برای استفاده از decimal ماژول برای گرد کردن اعشار، ابتدا باید a ایجاد کنید Decimal شیئی که نشان دهنده عدد اعشاری است که می خواهید گرد کنید. سپس، برای گرد کردن عدد، می توانید از آن استفاده کنید quantize() روش از Decimal هدف – شی:

Decimal(number).quantize(Decimal('.nf'))

اینجا، n تعداد ارقام اعشاری است که باید به آن گرد شوند و number عدد اعشاری است که می خواهید گرد کنید.

بیایید به شماره مثالی که در بخش های قبلی استفاده کرده ایم نگاهی بیندازیم – 3.14159 و با استفاده از علامت آن را به دو رقم اعشار گرد کنید decimal مدول:

from decimal import Decimal

x = Decimal(3.14159)
rounded_x = x.quantize(Decimal('.01'))

این rounded_x متغیر اکنون مقدار را نگه می دارد 3.14.

چند مثال دیگر

در اینجا چند نمونه دیگر از استفاده از decimal ماژول برای گرد کردن اعشار:


x = 3.14159
rounded_x = Decimal(x).quantize(Decimal('1'))



x = 3.14159
rounded_x = Decimal(x).quantize(Decimal('.1'))



x = 3.14159
rounded_x = Decimal(x).quantize(Decimal('.01'))

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

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

بهترین روش ها برای گرد کردن اعشار در پایتون

  1. نیازهای خود را بشناسید: قبل از انتخاب روشی برای گرد کردن اعشار، مهم است که نیازهای خود را درک کنید. آیا به حساب اعشاری دقیق نیاز دارید یا یک تقریب تقریبی کافی است؟ آیا باید عدد گرد شده را به صورت رشته ای نمایش دهید یا باید محاسبات بیشتری را با آن انجام دهید؟ پاسخ به این سوالات می تواند به شما در انتخاب روش مناسب برای نیازهایتان کمک کند.
  2. از داخلی استفاده کنید round() عملکرد برای موارد ساده: داخلی round() تابع ساده ترین راه برای گرد کردن اعداد اعشاری در پایتون است و برای اکثر موارد ساده به خوبی کار می کند. زمانی که به محاسبات اعشاری دقیق نیاز ندارید، و زمانی که نیازی به انجام محاسبات بیشتر با عدد گرد ندارید، از آن استفاده کنید.
  3. استفاده کنید format() روشی برای کنترل بیشتر: اگر به کنترل بیشتری بر روی قالب بندی عدد گرد نیاز دارید، از آن استفاده کنید format() روش. این به شما امکان می دهد تعداد ارقام اعشاری را برای گرد کردن مشخص کنید و سایر جنبه های قالب بندی را نیز کنترل کنید.
  4. استفاده کنید decimal ماژول برای محاسبه دقیق اعشاری: اگر نیاز به انجام محاسبات اعشاری دقیق دارید، از decimal مدول. این امکان را به شما می دهد تا دقت محاسبات اعشاری را کنترل کنید و راهی برای گرد کردن اعداد اعشاری به تعداد دلخواه ارقام اعشاری فراهم می کند.
  5. از خطاهای گرد کردن آگاه باشید: گرد کردن اعداد اعشاری می تواند خطاهای گرد کردن را ایجاد کند، به خصوص هنگام کار با اعداد بسیار بزرگ یا بسیار کوچک. از این خطاها آگاه باشید و کد خود را به دقت تست کنید تا مطمئن شوید که نتایج مورد انتظار را ایجاد می کند.
  6. از گرد کردن کیس های نیمه راه خودداری کنید: موارد نیمه راه زمانی اتفاق می افتد که عدد گرد شده دقیقاً در نیمه راه بین دو مقدار گرد شده ممکن باشد. گرد کردن موارد در نیمه راه می تواند نتایج غیرمنتظره ای به همراه داشته باشد، بنابراین به طور کلی بهتر است تا حد امکان از آنها اجتناب کنید.
  7. کد خود را مستند کنید: هنگام گرد کردن اعداد اعشاری در پایتون، مهم است که کد خود را به وضوح مستند کنید. توضیح دهید که چرا عدد را گرد می کنید، از چه روشی استفاده می کنید، و هر گونه فرض یا محدودیتی که اعمال می شود. این می تواند به اطمینان حاصل شود که کد شما واضح، صحیح و در طول زمان قابل نگهداری است.

نتیجه

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

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

در مجموع، گرد کردن اعشار ممکن است جزییات کوچکی به نظر برسد، اما قطعاً بخش مهمی از بسیاری از برنامه‌های پایتون است.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-01 08:10:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید