كيف أحصل على قيمة عشرية عند استخدام عامل القسمة في بايثون؟
-
02-07-2019 - |
سؤال
على سبيل المثال، يتم تقريب رمز القسمة القياسي '/' إلى الصفر:
>>> 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