سؤال

وأنا لست عالم الرياضيات، ولكن أفترض قسمة ما لا نهاية هو إما الرياضيات سيئة، أو، على الأقل، غير عملي.

وأنا مجرد قضاء نصف ساعة التصحيح بلدي جافا سكريبت التي كانت تعمل بشكل جيد تماما في فايرفوكس ولكن تم إعطائي خطأ في IE. أدركت أخيرا أنه كان لأنه في بعض الحالات، كنت طالبا IE القسمة على اللانهاية.

وهكذا، أنا ثابت ذلك، ولكن أنا الغريب لماذا كان فايرفوكس موافق على ذلك. وباعتراف الجميع، وهذا قد يكون أكثر من سؤال الرياضيات من البرمجة. ؛)

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

المحلول

وأعتقد أن هذا خطأ في IE. وفقا لقواعد IEEE الرياضيات، ن / المشاة = 0 (ل n! = 0). حتى إذا ينعق IE على هذا، انها مشكلة في IE. من ناحية أخرى، وذلك باستخدام المشاة في العمليات الحسابية العادية أمرا صعبا، وكنت أفضل حالا إذا التعليمات البرمجية لا تعتمد عليه في المقام الأول.

لماذا هو خطير؟ حسنا، بالنسبة للمبتدئين، وفقا لIEEE 754:

1/0 = Inf
1/-0 = -Inf

ولكن نحن نعلم أن 0 = -0، وبالتالي

Inf = -Inf

والذي هو غير مرغوب فيه واضح. لم IEEE لا يعني لجعل المشاة عدد العاديين على أي حال. الوقود النووي المشع ونان وجود لجعل العائمة علم الحساب نقطة في أجهزة الكمبيوتر مع القضايا الكامنة الدقة محدودة وتجاوز تشبه علم الحساب العادي على مستوى العالم، حيث، لاتخاذ أبسط مثال، يتم إغلاق مجموعة من الأرقام حقيقية في ظل إضافة (إضافة رقمين الحقيقية يؤدي دائما في العدد الحقيقي آخر). إذا كنت تفعل ذلك مع يطفو المتناهية الدقة، وستحصل على الحالات التي يكون فيها مشيرا الى ان اثنين أرقام النتائج في تجاوز. لتجنب الاضطرار لعلاج هذا الأمر حالة خطأ، قدم IEEE رمزين إضافية، المشاة ونان، ومجموعة من القواعد لسلوكهم. الآن نتيجة عملية حسابية دائما عددا، أو المشاة، أو نان، وعما إذا كانت نتيجة يجعل أي معنى أو لا تترك للمستخدم.

نصائح أخرى

وتقسيم من قبل ما لا نهاية على ما يرام - انها الصفر

وإلا إذا كنت تقسيم ما لا نهاية عن طريق اللانهاية، وهو غير معروف (في عام على الأقل)

وتقسيم عدد من اللانهاية غير معقول تماما من وجهة نظر رياضية. وهو رقم قريب من الصفر بلا حدود، دون التوصل فعلا الصفر.

ومن منظور البرمجيات، وهذا هو أصعب بكثير، كما لا نهاية ليست قيمة للتمثيل بتحفظ. تخميني أن يكون هذا الاختلاف بك في سلوك يقوم على أساس قرارات التصميم.

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

في IE، من ناحية أخرى، يبدو جعلت المطورين قرارا واعيا لعدم السماح لك لأداء عملية حسابية أنهم يعرفون أنهم لا يستطيعون إعطاء إجابة منفصلة ل.

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