تور لحظه آخری
امروز : پنجشنبه ، 15 آذر 1403    احادیث و روایات:  پیامبر اکرم (ص):دلى كه در آن حكمتى نيست، مانند خانه ويران است، پس بياموزيد و آموزش دهيد، بفهميد...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

صرافی ارکی چنج

صرافی rkchange

سایبان ماشین

دزدگیر منزل

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

پی جو مشاغل برتر شیراز

آراد برندینگ

خرید یخچال خارجی

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

پوستر آنلاین

بهترین وکیل کرج

بهترین وکیل تهران

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

ساختمان پزشکان

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

خرید سرور مجازی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

قیمت بالابر هیدرولیکی

لوله و اتصالات آذین

قرص گلوریا

نمایندگی دوو در کرج

خرید نهال سیب

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

وکیل ایرانی در استانبول

رفع تاری و تشخیص پلاک

پرگابالین

دوره آموزش باریستا

مهاجرت به آلمان

بهترین قالیشویی تهران

بورس کارتریج پرینتر در تهران

تشریفات روناک

نوار اخطار زرد رنگ

ثبت شرکت فوری

تابلو برق

خودارزیابی چیست

 






آمار وبسایت

 تعداد کل بازدیدها : 1838166881




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

باگ در Visual Basic 6


واضح آرشیو وب فارسی:سایت ریسک: View Full Version : باگ در Visual Basic 6 Morteza 56112-03-2010, 07:25 PMمن این سوال رو هر جا که تونستم مطرح کردم ولی هنوز جوابی نگرفتم: چرا حاصل یه تفریق مثل نمونه زیر ادر Visual Basicشتباه در میاد؟ 1.9 - 1.99 می شود 9.00000000000001E-02 ممنون میشم زودتر جواب بدید. M i L @ D12-03-2010, 08:53 PMمن این سوال رو هر جا که تونستم مطرح کردم ولی هنوز جوابی نگرفتم: چرا حاصل یه تفریق مثل نمونه زیر ادر Visual Basicشتباه در میاد؟ 1.9 - 1.99 می شود 9.00000000000001E-02 ممنون میشم زودتر جواب بدید. وقتی متغیر از نوع Currency باشه ، جواب درست درمیاد ! ولی نمیدونم چرا با Single و Double این جواب رو میده ! _H2_12-03-2010, 09:49 PMسلام من که از VB 6 خوشم نمی آید ولی این مورد باگ نیست! در محیطهای دیگر هم وجود دارد. دلیلش هم فقط و فقط مربوط به تبدیلات مبنای دو (باینری) اعداد اعشاری میشود. اصولاً به همین دلیل است که برای موارد مالی در VB 6 نوع Currency و در VB 7,8,9,10 نوع Decimal را پیشنهاد میکنند. ( البته برای ما ایرانی ها به دلیل نداشتن اعشار در واحد پولی نوع Integer و Long در VB 7,8,9,10 کافی است. Integer در VB 7,8,9,10 برابر Long در VB 6 است! Long در VB 7,8,9,10 هیچ معادلی در VB 6 ندارد!! ) ===== همانطور که در مبنای 10 برای ارزش مکانی اعداد یکان و ده گان و صدگان و هزارگان و... داریم. در مبنای 2 هم برای ارزش مکانی اعداد یکان و دوگان و چهارگان و هشت گان و.... داریم. مثلاً عدد 0101در باینری میشود 5 چرا؟ یک یک در محل یگان دارد و یک یک هم در محل چهارگان دارد که میشود 5 ! ===== در ارزش مکانی زیر اعشار هم همین وضعیت را داریم ... یعنی در مبنای 10 ارزش مکانی یکدهم گان(!) و یکصدم و یک هزارم و... را داریم. در مبنای 2 هم ارزش مکانی یک دوم گان(!) و یک چهارم و یک هشتم و... را داریم. یعنی اعداد اعشاری شما باید به نوعی به جمع این ارزش مکانی های مبنای 2 تبدیل شود که همیشه امکان دقیق این کار وجود ندارد!!!! مشابه مشکل 10 تقسیم بر 3 در مبنای ده خودمان! که حاصلش میشود 3.33333333333333 و تعداد 3 ها تمامی ندارد ولی متغیر حافظه محدود است و تا تعداد ارقام خاصی را میتواند جا دهد! به نوعی شبیه این مشکل در مبنای 2 هم با شرایط خودش رخ میدهد و اعداد ما در مبنای 10 امکان دارد کامل و دقیق به مبنای دو تبدیل نشوند و یا محاسبات کمی با چیزی که ما از مبنای ده انتظار داریم تفاوت داشته باشد. ===== به همین دلایل هم است که مدام در منابع آنلاین/آفلاین مایکروسافت و کتوب معتبر تاکید میشود که متغییر های ممیز شناور را با هم مقایسه تساویر نکنید ... یعنی در کدتان جایی برای single و double ننویسید if x = y !!! چون به احتمال اینکه تساوی برقرار نشده و false باشد بسیار بیشتر خواهد بود. نوعهای اعشار را همواره باید با یک مقدار فاصله مطلوب از هم مقایسه کرد. if ABS(x-y)<0.001 (یعنی x و y اختلافی کمتر از یکهزارم داشته باشند) و... ===== ولی ساختار متغیر های Currency یا Decimal کاملاً Binary نیست. به این معنی که در این ساختارها عدد اصلی جداگانه Binary ذخیره میشود و توان علمی در مبنای 10 (نه 2!) هم جداگانه Binary میشود. موفق باشید. Morteza 56113-03-2010, 09:03 PMواقعا دست هر دو عزیز (Lee_Young_Ae2027 جان و _H2_ جان درد نکنه) وای که چقدر کشتم خودمو تا این جوابا رو بشنوم. باور کنید حداقل از بیست نفر این سوال رو پرسیده بودم ولی بی جواب مونده بود. واقعا از ته دل میگم: اجرکم عندالله... سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود




این صفحه را در گوگل محبوب کنید

[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 337]

bt

اضافه شدن مطلب/حذف مطلب




-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن