الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

العمليات الحسابية

بدأه & الأمل & في 24 فبراير 2011 · 6 رد · 1,101 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اخوتى الكرام

عملت برنامج للعمليات الحسابية لكن عند ضرب عدد مثلا

100000* 100000 (اى اذا زاد عدد الاصفار في اى عملية حسابية عن9 أصفار)

يعطيني رسالة

حدث استثناء غير معالج في التطبيق(حدث تجاوز لوجود عملية حسابية)

وكذلك إذا لم ادخل اى رقم واخترت اظهار النتيجة

يعطيني نفس الرسالة

جزاكم الله خيراً

#2
اقتباس
اى اذا زاد عدد الاصفار في اى عملية حسابية عن9 أصفار

هذا الخطأ يرجع إلى نوع المتغير المستخدم لتخزين النتيجة ومن الواضح أن المتغير الذى تم استخدامه من النوع Integer لذلك أعطى الخطأ StackOverflowException لأن قيمة العملية 100000 * 100000 = 10000000000 فى حين أن أكبر قيمة يمكن تخزينها فى متغير من هذا النوع هى 2147483647

يمكنك استخدام متغير من النوع Double لحل هذه المشكلة ولدعم الكسور أيضا

اقتباس
وكذلك إذا لم ادخل اى رقم واخترت اظهار النتيجة

يعطيني نفس الرسالة

يجب التأكد من أن المستخدم قد قام بالفعل بإدخال قيمة أو استخدام الدالة Val لتحويل القيمة النصية إلى قيمة رقمية أو استخدام Double.TryParse وهذا هو الذى أفضله شخصيا مع أن استخدام الدالة Val أسهل :)

        Dim num1, num2 As Double
        Double.TryParse(TextBox1.Text, num1)
        Double.TryParse(TextBox2.Text, num2)
        MsgBox(num1 * num2)

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#3

السلام عليكم ورحمه الله وبركاته

اخي GHOST2010 كلامك صحيح ولكن انت حولت القيمه من Integer إلى Double , فاذا تم حفظ النتيجه لاحقاً في متغير صحيح سيظهر خطأ اخر

انصح باستخدام الاستثناءات


TextBox3.Text = Convert.ToInt32(TextBox1.Text) * Convert.ToInt32(TextBox2.Text)
Catch ex As Exception
MessageBox.Show("Error")
End Try
Try

.:: Wish to become better and better ::.

#4
اقتباس
ولكن انت حولت القيمه من Integer إلى Double , فاذا تم حفظ النتيجه لاحقاً في متغير صحيح سيظهر خطأ اخر

كيف يتم حفظ النتيجة فى متغير صحيح وناتج العملية أصلا أكبر من أكبر قيمة يسمح بها المتغير الصحيح؟!

Convert.ToInt32 ستقوم بتحويل الرقم المدخل إلى قيمة صحيحة وبالتالى يمنع إدخال قيم أكبر من 2147483647 كما يمنع أيضا استخدام العلامات العشرية

الطبيعى أنه فى العمليات الحسابية يتم استخدام النوع الذى يستطيع أن يحمل أكبر قيمة ممكنة (Double - Decimal) لأنك لا تدرى ما هى الأرقام التى سيقوم المستخدم بإدخالها وبالفعل كما تفضلت وذكرت لابد من استخدام التركيب Try..Catch لتفادى أى أخطاء أخرى

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#5

جزاكم الله خير

أخوتى الكرام العملية تمت الى (14صفر100000000000000

وذلك بأستخدام القيمة Double

لكن 100000000000000(15 صفر)

يعطينى النتيجة +لانهاية

لكن بعد استخدام الكود Try..Catch+رسالة الخطاء

يعطينى رسالة الخطا

لكن هل هناك قيمة تستخدم للاعداد الكبيرة جزاكم الله خيرا

#6

أكبر نوع من أنواع المتغيرات الرقمية المدعومة فى الدوت نت على حسب علمى هو Double

1

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#7

اخى الكريم

جزاك الله خيرا

مواضيع مشابهة