اذهب إلى المحتوى

السؤال

نشر (معدل)

انا جديد على بايثون...فالمعذرة منكم جميعا

لماذا عند عملية الضرب في بايثون يكون الناتج غير صحيح

مثلا 

9*0.01*10

يكون الناتج 0.8999999999999999

والاصل يكون الناتج 0.9

كيف اتخلص من هذه المشكله

 

تم التعديل في بواسطة Mustafa Suleiman
تعديل عنوان السؤال

Recommended Posts

  • -1
نشر

لأن  بايثون تستخدم عددًا عشريًا مزدوجًا لتمثيل الأعداد العشرية، والأعداد العشرية المزدوجة هي أعداد عشرية تقريبية، مما يعني أنها لا يمكنها تمثيل جميع الأعداد العشرية بدقة.

ففي العملية 9 * 0.01 * 10 الناتج يساوي 0.8999999999999999 لأن 0.01 هو رقم عشري مزدوج غير دقيق، وإن كنت تريد الحصول على الناتج الصحيح، فعليك استخدام عدد عشري دقيق، أي:

  1. استخدم نوعًا عشريًا دقيقًا، مثل Decimal.
import decimal

result = decimal.Decimal(9) * decimal.Decimal(0.01) * decimal.Decimal(10)
print(result) #0.9000000000000000187350135405
  1. أو تقريب الرقم العشري المزدوج.
result = round(9 * 0.01 * 10, 4)
print(result) #0.9

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...