كيف أحصل على قيمة عشرية عند استخدام عامل القسمة في بايثون؟

StackOverflow https://stackoverflow.com/questions/117250

سؤال

على سبيل المثال، يتم تقريب رمز القسمة القياسي '/' إلى الصفر:

>>> 4 / 100
0

ومع ذلك، أريد أن يعود 0.04.ماذا أستخدم؟

هل كانت مفيدة؟

المحلول

هناك ثلاثة خيارات:

>>> 4 / float(100)
0.04
>>> 4 / 100.0
0.04

وهو نفس سلوك C أو C++ أو Java وما إلى ذلك أو

>>> from __future__ import division
>>> 4 / 100
0.04

يمكنك أيضًا تنشيط هذا السلوك عن طريق تمرير الوسيطة -Qnew إلى مترجم بايثون:

$ python -Qnew
>>> 4 / 100
0.04

سيكون الخيار الثاني هو الخيار الافتراضي في Python 3.0.إذا كنت ترغب في الحصول على قسمة الأعداد الصحيحة القديمة، فيجب عليك استخدام // المشغل أو العامل.

يحرر:تمت إضافة قسم حول -Qnew, شكرا ل ΤΖΩΤΖΙΟΥ!

نصائح أخرى

تقترح الإجابات الأخرى كيفية الحصول على قيمة الفاصلة العائمة.على الرغم من أن هذا سيكون قريبًا مما تريده، إلا أنه لن يكون دقيقًا:

>>> 0.4/100.
0.0040000000000000001

إذا كنت تريد فعلا عدد عشري القيمة، قم بذلك:

>>> import decimal
>>> decimal.Decimal('4') / decimal.Decimal('100')
Decimal("0.04")

سيعطيك ذلك كائنًا يعرف بشكل صحيح أن 4/100 بوصة القاعدة 10 هو "0.04".أرقام الفاصلة العائمة موجودة بالفعل في الأساس 2، أي.ثنائي وليس عشري

اجعل أحد الحدين أو كليهما رقمًا عائمًا، كما يلي:

4.0/100.0

وبدلاً من ذلك، قم بتشغيل الميزة الافتراضية في Python 3.0، "القسمة الحقيقية"، والتي تفعل ما تريد.في الجزء العلوي من الوحدة النمطية أو البرنامج النصي الخاص بك، قم بما يلي:

from __future__ import division

قد ترغب في إلقاء نظرة على بايثون عدد عشري الحزمة أيضا.سيوفر هذا نتائج عشرية لطيفة.

>>> decimal.Decimal('4')/100
Decimal("0.04")

عليك أن تطلب من بايثون استخدام قيم الفاصلة العائمة، وليس الأعداد الصحيحة.يمكنك القيام بذلك ببساطة عن طريق استخدام العلامة العشرية بنفسك في المدخلات:

>>> 4/100.0
0.040000000000000001

حاول 4.0/100

طريق بسيط 4 / 100.0

أو

4.0 / 100

لدينا هنا حالتان محتملتان مذكورتان أدناه

from __future__ import division

print(4/100)
print(4//100)

يمكنك أيضًا محاولة إضافة ".0" في نهاية الرقم.

4.0/100.0

لا يمكنك الحصول على قيمة عشرية عن طريق قسمة عدد صحيح على آخر، وستحصل دائمًا على عدد صحيح بهذه الطريقة (يتم اقتطاع النتيجة إلى عدد صحيح).تحتاج إلى قيمة واحدة على الأقل لتكون رقمًا عشريًا.

أضف الوظيفة التالية في التعليمات البرمجية الخاصة بك مع رد الاتصال الخاص بها.

# Starting of the function
def divide(number_one, number_two, decimal_place = 4):
    quotient = number_one/number_two
    remainder = number_one % number_two
    if remainder != 0:
        quotient_str = str(quotient)
        for loop in range(0, decimal_place):
            if loop == 0:
                quotient_str += "."
            surplus_quotient = (remainder * 10) / number_two
            quotient_str += str(surplus_quotient)
            remainder = (remainder * 10) % number_two
            if remainder == 0:
                break
        return float(quotient_str)
    else:
        return quotient
#Ending of the function

# Calling back the above function
# Structure : divide(<divident>, <divisor>, <decimal place(optional)>)
divide(1, 7, 10) # Output : 0.1428571428
# OR
divide(1, 7) # Output : 0.1428

تعمل هذه الوظيفة على أساس "خوارزمية تقسيم إقليدس".هذه الوظيفة مفيدة جدًا إذا كنت لا ترغب في استيراد أي ملفات رأس خارجية في مشروعك.

بناء الجملة :القسمة ([المقسوم]، [المقسوم عليه]، [المنزلة العشرية (اختياري))

شفرة : divide(1, 7, 10) أو divide(1, 7)

التعليق أدناه لأية استفسارات.

قسم الاستيراد من المكتبة المستقبلية مثل هذا:

from__future__ import division
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top