تساعدنا وحدة التعامل مع الأرقام العشرية في لغة البرمجة بيثون في القسمة بدقة مناسبة وتقريب الأرقام. الأرقام
وحدة التعامل مع الأرقام العشرية في لغة البرمجة بيثون
في هذا الدرس حول وحدة التعامل مع الأرقام العشرية في لغة البرمجة بيثون، سنرى كيف يمكننا إدارة الأرقام العشرية في برامجنا للحصول على دقة وتنسيق وإجراء الحسابات أيضًا. من السهل جدًا فقدان الدقة مع الأرقام العشرية إذا لم يتم التعامل مع الأرقام بشكل صحيح. دعنا نرى كيف تساعد وحدة التعامل مع الأرقام العشرية في بيثون ووظائفها المتاحة في هذه المجالات.
العمل مع الأرقام العشرية
الأرقام العشرية هي مجرد الأرقام العائمة مع نقاط عشرية ثابتة. يجب علينا تقريب الأرقام بشكل صحيح بناءً على احتياجنا، وإلا فإن النتائج يمكن أن تكون غير متوقعة. تساعد وحدة التعامل مع الأرقام العشرية في بيثون على أن نكون أكثر دقة مع الأرقام العشرية.
حاجة لوحدة العشريات
قبل أن نقوم فعلاً بوضع هذه الوحدة إلى الاستخدام، دعونا نرى ما هي الدقة التي نتحدث عنها ونحدد لماذا نحتاج إلى هذه الوحدة بالفعل. دعونا نلقي نظرة على مقتطف الكود التالي:
division = 72 / 7
print(division)
لنرى الناتج لهذا البرنامج: حسنًا، الإجابة لم تكن دقيقة فعلاً ولم تكن هناك نقاط عشرية على الإطلاق! لنرى كيف يمكننا تصحيح ذلك باستخدام وحدة العشريات.
استخدام وحدة العشريات
في جميع البرامج التي سنقوم بإنشائها في هذه المقالة، سنقوم بإدراج وحدة العشريات في كل منها:
import decimal
قد يكون الأمر كذلك أننا نقوم بإدراج وظيفة محددة فقط من هذه الوحدة. يمكن القيام بذلك كما يلي:
from decimal import Decimal
لنبدأ بوضع وحدة العشريات في بعض البرامج.
مثال على وحدة العشريات في Python
سنبدأ بأمثلة تتعلق بالوحدة الآن.
تصحيح القسمة بالأعداد العشرية
هنا، سنقوم بتصحيح البرنامج الذي كتبناه أعلاه لأداء القسمة التي يجب أن تنتج نتيجة عائمة. سيبدو البرنامج المعدل مع وحدة العشرية كالتالي:
import decimal
division = decimal.Decimal(72) / decimal.Decimal(7)
print(division)
دعنا نرى النتيجة لهذا البرنامج: للإشارة، القسمة صحيحة الآن ودقيقة أيضًا، أو ربما هي دقيقة جدًا؟
التحكم في الدقة لعملية واحدة
في البرنامج السابق، كان هناك 25 مكانًا عشريًا في الإجابة الآن. ولكن ماذا لو أردنا فقط ثلاثة أماكن للقيم العشرية؟ يمكن التحكم في هذا أيضًا. هنا، سنتحكم في دقة الإجابة والتي لن تنعكس في عمليات أخرى في برنامجنا:
import decimal
with decimal.localcontext() as ctx:
ctx.prec = 3
division = decimal.Decimal(72) / decimal.Decimal(7)
print(division)
again = decimal.Decimal(72) / decimal.Decimal(7)
print(again)
قمنا بعملية القسمة مرتين لإثبات نقطة. دعنا نرى النتيجة لهذا البرنامج: هل لاحظت شيئًا؟ الدقة التي حددناها كانت صالحة فقط لمرة واحدة. في المرة القادمة التي قمنا فيها بالقسمة، حصلنا على نفس النتيجة.
التحكم في الدقة لبرنامج كامل
من الممكن أيضًا التحكم في الدقة على مستوى البرنامج بأكمله. لا يُوصى بهذا دائمًا عند التعامل مع الكثير من الأرقام في برنامجك. إليك مثال:
import decimal
decimal.getcontext().prec = 3
division = decimal.Decimal(72) / decimal.Decimal(7)
print(division)
again = decimal.Decimal(72) / decimal.Decimal(7)
print(again)
لنرى الناتج لهذا البرنامج:
تقريب الأرقام
من الممكن تقريب الأرقام بشكل دقيق باستخدام الدالة round(...)
. دعنا نجرب ذلك:
import decimal
#يمكن تقريبها إلى 13.48 أو 13.49
rounded = round(13.485, 2)
print(rounded)
لنرى الناتج لهذا البرنامج: يمكن تقريب الرقم في البرنامج إلى 13.48 أو 13.49. بشكل افتراضي، تقوم دالة
round(...)
بالتقريب للأسفل. يمكن تغيير ذلك أيضًا:
import decimal
#يمكن تقريبها إلى 13.48 أو 13.49
rounded = round(13.485, 2)
print(decimal.Decimal(rounded).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP))
لنرى الناتج لهذا البرنامج:
الحصول على سياق العدد العشري في Python
إذا كنت مهتمًا بالنظر إلى السياق الافتراضي المُعيَّن افتراضيًا لوحدة العدد العشري، يمكنك استخدام النص التالي:
from decimal import *
print(getcontext())
دعنا نرى الناتج لهذا البرنامج: هذا كل شيء بالنسبة لوحدة العدد العشري في Python، فهي مفيدة للغاية عند العمل مع أرقام النقطة العائمة.
Source:
https://www.digitalocean.com/community/tutorials/python-decimal-division-round-precision