Python دالة round() مع أمثلة
⚡ ملخص ذكي
Python الدالة round() هي دالة مدمجة تقوم بإرجاع قيمة عددية عشرية أو عدد صحيح يتم تقريبها إلى عدد محدد من المنازل العشرية، باستخدام تقريب المصرفيين لكسر التعادلات نحو أقرب رقم زوجي.
ما هي دالة round() في Python?
Python الدالة round() هي دالة مدمجة متوفرة مع Pythonستُعيد لك هذه الدالة رقمًا عشريًا يتم تقريبه إلى المنازل العشرية التي تم إدخالها.
إذا لم يتم تحديد الأماكن العشرية التي سيتم تقريبها، فسيتم اعتبارها 0، وسيتم التقريب إلى أقرب عدد صحيح.
بناء الجملة
round(float_num, num_of_decimals)
المعاملات
- float_num: الرقم العشري المراد تقريبه.
- عدد المنازل العشرية: (اختياري) عدد المنازل العشرية التي يجب مراعاتها أثناء التقريب. هذا الخيار اختياري، وإذا لم يتم تحديده، فسيتم تعيينه افتراضيًا إلى 0، وسيتم التقريب إلى أقرب عدد صحيح.
الوصف
تأخذ الدالة round() وسيطين:
- الرقم المراد تقريبه، و
- المنازل العشرية التي يجب مراعاتها أثناء التقريب.
الوسيط الثاني اختياري وقيمته الافتراضية هي 0 عند عدم تحديده، وفي هذه الحالة، سيتم تقريبه إلى أقرب عدد صحيح، وسيكون نوع الإرجاع أيضًا عددًا صحيحًا.
عند وجود المنازل العشرية، أي الوسيطة الثانية، سيتم تقريبها إلى عدد المنازل المعطاة. سيكون نوع الإرجاع عائمًا.
إذا كان الرقم الذي يلي الفاصلة العشرية هو:
- إذا كانت القيمة ≥ 5، فسيتم إضافة 1 إلى القيمة النهائية.
- إذا كانت القيمة أقل من 5، فسيتم إرجاع القيمة النهائية كما هي، حتى المنازل العشرية المذكورة.
قيمة الإرجاع
ستُعيد الدالة قيمة عددية صحيحة إذا لم يتم تحديد عدد المنازل العشرية، وقيمة عشرية إذا تم تحديده. يُرجى ملاحظة أنه سيتم تقريب القيمة إلى +1 إذا كانت القيمة بعد الفاصلة العشرية أكبر من أو تساوي 5، وإلا فستُعيد الدالة القيمة كما هي، حتى عدد المنازل العشرية المذكور.
ما مدى التأثير الذي يمكن أن يحدثه التقريب؟ (التقريب مقابل الاقتطاع)
أفضل مثال لتوضيح تأثير التقريب هو سوق الأوراق المالية. في الماضي، أي في عام 1982، بورصة فانكوفر (VSE) يستخدم لتقريب قيم الأسهم إلى ثلاثة منازل عشرية في كل صفقة.
كان يتم ذلك ما يقارب 3000 مرة يومياً. وأدت عمليات الحذف المتراكمة إلى خسارة حوالي 25 نقطة شهرياً.
يظهر أدناه مثال لاقتطاع القيم مقابل التقريب.
اعتبر الأرقام العشرية الموضحة أدناه بمثابة قيم أسهم. حاليًا، أقوم بإنشائها لنطاق زمني قدره مليون ثانية، يتراوح بين 0.01 و0.05.
أمثلة:
arr = [random.uniform(0.01, 0.05) for _ in range(1000000)]
لإظهار تأثير التقريب، كتبت جزءًا صغيرًا من التعليمات البرمجية حيث تستخدم في البداية الأرقام حتى 3 منازل عشرية فقط، أي اقتطاع الرقم بعد 3 منازل عشرية.
لدي القيمة الإجمالية الأصلية، والمجموع الناتج عن القيم المقتطعة، والفرق بين القيمة الأصلية والقيمة المقتطعة.
على نفس مجموعة الأرقام، استخدمت طريقة round() حتى 3 منازل عشرية وحسبت المجموع والفرق بين القيمة الأصلية والقيمة المقربة.
إليكم المثال والنتيجة.
مثال 1
import random def truncate(num): return int(num * 1000) / 1000 arr = [random.uniform(0.01, 0.05) for _ in range(1000000)] sum_num = 0 sum_truncate = 0 for i in arr: sum_num = sum_num + i sum_truncate = truncate(sum_truncate + i) print("Testing by using truncating upto 3 decimal places") print("The original sum is = ", sum_num) print("The total using truncate = ", sum_truncate) print("The difference from original - truncate = ", sum_num - sum_truncate) print("\n\n") print("Testing by using round() upto 3 decimal places") sum_num1 = 0 sum_truncate1 = 0 for i in arr: sum_num1 = sum_num1 + i sum_truncate1 = round(sum_truncate1 + i, 3) print("The original sum is =", sum_num1) print("The total using round = ", sum_truncate1) print("The difference from original - round =", sum_num1 - sum_truncate1)
الإخراج:
Testing by using truncating upto 3 decimal places The original sum is = 29985.958619386867 The total using truncate = 29486.057 The difference from original - truncate = 499.9016193868665 Testing by using round() up to 3 decimal places The original sum is = 29985.958619386867 The total using round = 29985.912 The difference from original - round = 0.04661938686695066
الفرق بين القيمة الأصلية والقيمة المقطوعة هو 499.9016193868665، ومن دالة round()، يكون 0.04661938686695066.
يبدو أن الفرق كبير جدًا، ويوضح المثال كيف تساعد طريقة round() في الحساب بدقة قريبة من الدقة.
مثال: تقريب التعويم Numbers
سنرى في هذا البرنامج كيف تعمل عملية التقريب على الأرقام العشرية.
# testing round() float_num1 = 10.60 # here the value will be rounded to 11 as after the decimal point the number is 6 that is >5 float_num2 = 10.40 # here the value will be rounded to 10 as after the decimal point the number is 4 that is <=5 float_num3 = 10.3456 # here the value will be 10.35 as after the 2 decimal points the value >=5 float_num4 = 10.3445 #here the value will be 10.34 as after the 2 decimal points the value is <5 print("The rounded value without num_of_decimals is :", round(float_num1)) print("The rounded value without num_of_decimals is :", round(float_num2)) print("The rounded value with num_of_decimals as 2 is :", round(float_num3, 2)) print("The rounded value with num_of_decimals as 2 is :", round(float_num4, 2))
الإخراج:
The rounded value without num_of_decimals is : 11 The rounded value without num_of_decimals is : 10 The rounded value with num_of_decimals as 2 is : 10.35 The rounded value with num_of_decimals as 2 is : 10.34
مثال: تقريب القيم الصحيحة
إذا كنت تستخدم round() على قيمة عددية، فسوف يعيد لك الرقم مرة أخرى دون أي تغييرات.
# testing round() on a integer num = 15 print("The output is", round(num))
الإخراج:
The output is 15
مثال: التقريب إلى السالب Numbers
دعونا نرى بعض الأمثلة على كيفية عمل التقريب على الأعداد السالبة.
# testing round() num = -2.8 num1 = -1.5 print("The value after rounding is", round(num)) print("The value after rounding is", round(num1))
الإخراج:
C:\pythontest>python testround.py The value after rounding is -3 The value after rounding is -2
مثال: تقريب مصفوفات NumPy
كيف يتم تقريب الأرقام في NumPy؟ المصفوفات في Python?
لحل هذه المشكلة، يمكننا استخدام وحدة NumPy واستخدام طريقة numpy.round() أو numpy.around()، كما هو موضح في المثال أدناه.
باستخدام numpy.round()
# testing round() import numpy as np arr = [-0.341111, 1.455098989, 4.232323, -0.3432326, 7.626632, 5.122323] arr1 = np.round(arr, 2) print(arr1)
الإخراج:
C:\pythontest>python testround.py [-0.34 1.46 4.23 -0.34 7.63 5.12]
يمكننا أيضًا استخدام numpy.around()، والذي يعطيك نفس نتيجة numpy.round() الموضحة أعلاه.
مثال: الوحدة العشرية
بالإضافة إلى دالة round()، Python يحتوي على وحدة عشرية تساعد في التعامل مع الأرقام العشرية بدقة أكبر.
تأتي وحدة الأعداد العشرية مزودة بأنواع التقريب، كما هو موضح أدناه:
- سقف دائري: سوف تقترب من اللانهاية.
- ROUND_DOWN: سيتم تقريب القيمة إلى الصفر.
- الطابق الدائري: سوف تقترب من سالب ما لا نهاية.
- ROUND_HALF_DOWN: سيتم تقريبها إلى أقرب قيمة تقترب من الصفر.
- ROUND_HALF_EFN: سيتم تقريبها إلى أقرب قيمة، أي إلى أقرب عدد زوجي صحيح.
- ROUND_HALF_UP: سيتم تقريبها إلى أقرب قيمة بعيدة عن الصفر.
- جمع الشمل: سيتم تقريب القيمة عندما تبتعد عن الصفر.
في النظام العشري، تساعد طريقة quantize() على التقريب إلى عدد ثابت من المنازل العشرية، ويمكنك تحديد التقريب المطلوب استخدامه، كما هو موضح في المثال أدناه.
على سبيل المثال: باستخدام الطرق المستديرة () والعشرية
import decimal round_num = 15.456 final_val = round(round_num, 2) #Using decimal module final_val1 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_CEILING) final_val2 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_DOWN) final_val3 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_FLOOR) final_val4 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_DOWN) final_val5 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_EVEN) final_val6 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_HALF_UP) final_val7 = decimal.Decimal(round_num).quantize(decimal.Decimal('0.00'), rounding=decimal.ROUND_UP) print("Using round()", final_val) print("Using Decimal - ROUND_CEILING ",final_val1) print("Using Decimal - ROUND_DOWN ",final_val2) print("Using Decimal - ROUND_FLOOR ",final_val3) print("Using Decimal - ROUND_HALF_DOWN ",final_val4) print("Using Decimal - ROUND_HALF_EVEN ",final_val5) print("Using Decimal - ROUND_HALF_UP ",final_val6) print("Using Decimal - ROUND_UP ",final_val7)
الإخراج:
Using round() 15.46 Using Decimal - ROUND_CEILING 15.46 Using Decimal - ROUND_DOWN 15.45 Using Decimal - ROUND_FLOOR 15.45 Using Decimal - ROUND_HALF_DOWN 15.46 Using Decimal - ROUND_HALF_EVEN 15.46 Using Decimal - ROUND_HALF_UP 15.46 Using Decimal - ROUND_UP 15.46

