یک باگ در Visual Studio .Net 2005 - c#

صفحه اصلی کارگروهها >> برنامه نویسی تحت Microsoft .Net  >> یک باگ در Visual Studio .Net 2005 - c#
مهدی دلمقانی

مهدی دلمقانی

در کارگروه: برنامه نویسی تحت Microsoft .Net
تعداد ارسالي: 4
17 سال پیش در تاریخ: یکشنبه, بهمن 08, 1385 4:46

زمانی که مشغول انجام یک پروژه بزرگ در Visual Studion .Net 2005 بودم  که محاسبات پیچیده ای هم  روی اعداد اعشاری داره،  به یک باگ برخوردم که اینجا توضیح میدم.
یک متد به شکل زیر بنوسید:



 private float a()
{
float length = 0F;
length = (float)Math.Round(Convert.ToDouble("135.4"), 4);
length *= 10.0F;
length = (float)Math.Truncate(length);
length /= 10F;
return length;
}



 حالا متد ()a را در یک event  اجرا کنید. مثلا در فرم خود یک button و یک textbox بگذارید و در event  کلیک button  کد زیر را وارد کنید: 



 float length = 0F;
length = a();
textBox1.Text = length.ToString();
 



 حالا برنامه را با Ctrl-F5 اجرا کنید و روی button کلیک کنید؛ عدد 135.3 در textbox نوشته میشود! در حالی که نتیجه درست 135.4 است!
حالا برنامه را با F5 ( یعنی در حالت  debug ) اجرا کنید؛ ایندفعه نتیجه 135.4 و درست است!! یعنی نتیجه اجرا در زمان debug  و در زمان اجرای معمولی متفاوت است!
این کد رو اجرا کنین و نتیجه اون رو ببینید. جالب اینه که اگه همین کد رو در یک پروژه Console اجرا کنین این مشکل بوجود نمیاد!


حذف ارسالي ويرايش ارسالي