سؤال

وأنا باستخدام C # مع مكتبة XNA وأنا اتلقى NaNs لزراعة المحاصيل في بلدي الأشياء Vector3. هل هناك طريقة لاقتحام المصحح عندما يحدث حساب المخالف (مثل القسمة على صفر)؟ حاليا البرنامج فقط لا يزال قيد التشغيل. أنا باستخدام VS2008 المهنية. ويتم اختيار جميع الاستثناءات في الحوار الاستثناءات في عمود "الاستخدام غير معالج".

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

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

المحلول

أولا تقسيم مزدوج / تعويم على صفر يعطي إنفينيتي / -Infinity اعتمادا على ما إذا كان ضعف هو إيجابي أو سلبي. فقط صفر مزدوجة / تعويم مقسوما صفر يعطي نان. في كلتا الحالتين، سيتم طرح يست استثناء.

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

double a = double.NaN;
Console.Out.WriteLine(a == double.NaN); // false
Console.Out.WriteLine(a == a); // false
Console.Out.WriteLine(double.IsNaN(a)); // true

نصائح أخرى

ويبدو وكأنه كنت التعامل مع استثناء بطريقة أو بأخرى (مثل اصطياد استثناء عام) ما يمكنك القيام به هو الضغط على Ctrl + ALT + E لإظهار الحوار استثناءات - تأكد من تحقق خانة الاختيار "عندما القيت" ل باستثناء (ق) كنت مهتما

هل يمكن تحديد توقف الشرطي أن يكسر الوحيدة عندما المقسوم عليه تعبير هو 0 .

وأنا أعلم أن هذه هي وظيفة القديمة ولكن .....

ومن تجربتها دائما تقريبا Vector3.Normalize التي تستخدم عن طريق الخطأ.

عند لست متأكدا ما إذا كان سيكون طول صفري أنا الآن تفعل دائما

وتعويم L = V.Length ()؛ إذا (L! = 0.0)    V = / L؛

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

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