• 0
cdcase

لماذا دالة ال Round تعطي نتائج غير صحيحة

سؤال

السلام عليكم

شيء غريب فى ال vb.net2008

دالة ال Round تعطي نتائج غير صحيحة

كود بسيط مثل هذا

TextBox2.Text = Decimal.Round(Val(TextBox1.Text))

جربوا تقريب هذه الأرقام الى أقرب عدد صحيح عسي أن أكون مخطي

11.5 تعطي 12

12.5 تعطي 12

13.5 تعطي 14

14.5 تعطي 14

20.5 تعطي 20

21.5 تعطي 22

22.5 تعطي 22

23.5 تعطي 24

هل لاحظتم ان الدالة تقرب الرقم الصحيح الذى على يسار العلامة العشرية عندما يكون فردي فقط

برجاء التجربة

تقبلوا مرورى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

جرب أيضا هذا الكود ويعطى نفس النتائج السابقة

Dim value As Double = Double.Parse(TextBox1.Text)

Dim result As Double = Round(value )

TextBox2.Text = result.ToString

غريبة

:tantrum:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

أخي الحبيب

اجعل الكود كما يلي :

TextBox2.Text = Decimal.Round(Val(TextBox1.Text), 0, MidpointRounding.AwayFromZero)

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ليست غريبة و لا غير صحيحة. هذه هي طريقة عمل Round في وضعها الإفتراضي. يسمى هذا التقريب البنكي banker rounding و يهدف إلى تقليل أخطاء التقريب عند وجود الكثير من القيم الرقمية.

من مقالة MSDN

Return Value

The whole number nearest parameter d. If d is halfway between two whole numbers, one of which by definition is even and the other odd, then the even number is returned.

Remarks

The behavior of this method follows IEEE Standard 754, section 4. This kind of rounding is sometimes called rounding to nearest, or banker's rounding.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخوانى Hossam El-Din و System Down

شكرا على المعلومة وجزيتم خيرا فى الدنيا والأخرة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .