يفشل Convert.Toint32 (تعويم) عند محاولة تحويل الطفو إلى int32

StackOverflow https://stackoverflow.com/questions/3558112

  •  01-10-2019
  •  | 
  •  

سؤال

لم يتم طرح أي استثناء ، وتتوقف الوظيفة في هذا البيان:

int productQuantity = Convert.ToInt32("1.00");

ويعود.

ماذا أفعل خطأ لتحويل هذا التعويم إلى Int32?

ملاحظة: أنا أركض في BackgroundWorkerThread.

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

المحلول

يتم طرح استثناء في هذه الحالة ، إنه لا يتم ظهوره في مصحح الأخطاء. هذه السلسلة ليست بتنسيق قابل للتحويل إلى Int32 اكتب وبالتالي رميات واستثناء. يمكنك التحقق من ذلك عن طريق لفه في كتلة Try/Catch إذا لم تتعاون IDE.

أفضل طريقة هنا هي تحويل السلسلة إلى double ثم يلقيها يدويًا إلى int. هذا يفتح الباب لفقدان البيانات بسبب الاختلافات الدقيقة. ولكن بالنظر إلى أن مدخلاتك بتنسيق على نمط التعويم ، فهذا أمر لا مفر منه إذا كنت تريد أن يكون المنتج النهائي هو int

نصائح أخرى

تحتاج إلى تحويله إلى أ double أولا ، ثم التحويل إلى Int32.

int productQuantity = Convert.ToInt32(double.Parse("1.00"));

يتم إلقاء استثناء ، إنه مجرد رؤيته عليك فحص RunWorkerCompletedEventArgs.Error الممتلكات في معالج الأحداث BackgroundWorker.RunWorkerCompleted.

يتم تعيين أي استثناء يتم إلقاؤه من موضوع عامل الخلفية عند القيام بعمل الخلفية لتلك الخاصية.

سلسلة إدخال Formatexception لم تكن بتنسيق صحيح.

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