مرحبا بالجميع! غالبًا ما نستخدم الأرقام المألوفة بلغات البرمجة المفضلة لدينا. المعتاد هو 1 ، -1.5 ، بي أو حتى معقدة. لكن NaN ، + Inf ، -Inf يُستخدم من قبلنا كثيرًا.
ملاحظة:
في المقالة ، استخدم الدالات الأولية لإصدار Python 3.6.8 ، لكن الكثير سيكون ذا صلة باللغات الأخرى ، على سبيل المثال ، لـ JS.
هناك الكثير من المواقف غير المؤكدة في الرياضيات. على سبيل المثال ، هذا قسمة على 0.
الكتابة في وحدة التحكم
1/0
سوف تحصل على خطأ ZeroDivisionError. المتوقع ، أنت تقول؟ نعم. لنجرب مثالاً آخر:
0**0
كما تعلم ، 0 إلى قوة 0 هو عدم اليقين الرياضية الكلاسيكية.
ومع ذلك ، يقول بيثون هذا هو 1. السؤال الذي يطرح نفسه معقول:

لماذا لا يُسمح لنا بـ "إطلاق النار في القدم" مقسومًا على 0 ، لكنهم يبلغون عن نتيجة خاطئة بمثل هذا العمل غير المحدد؟
ربما يكون شخص ما غاضبًا الآن ويصرخ بأن الإجابة بسيطة: IEEE 754. وإذا لم أكن مخطئًا ، فقد اتفقنا بمساعدته على أن أي عدد في الدرجة 0 هو 1.
هذا هو المكان الذي تبدأ فيه المتعة. يدعم JavaScript أيضًا IEEE (0.1 + 0.2! = 0.3) ، ولكن 1/0 فيه هو ما لا نهاية ، وليس القسمة على 0 خطأ.
نتيجة لذلك ، لدينا (جميع الأمثلة على الثعبان):
1. الأخطاء الناتجة عن الإجراءات غير الصحيحة
الأمثلة على ذلك:
1/0
2. إرجاع قيم غير صحيحة
مثال:
0**0
3. إرجاع القيم الخاصة:
+ -Inf ، نان
مثال:
inf=float('inf') inf-inf
في رأيي هذا مربك.
اليوم فقط ، لاحظت وجود سلوك PHP مثير للاهتمام:
var_dump(mt_rand(INF,INF));
أنا قاطع ضد 2 خيارات وربما دعم 1.
لأنه ، كما يوضح المثال PHP ، تحتاج إلى استخدام الوقود النووي المشع والحذر. ما رايك