سلام

مشکلی که باهاش مواجه شدم اینه که موقع ذخیره سازی مقدار در یک متغیر Double بعضا اعداد اعشاری خیلی کم ارزشی وجود دارند که باعث اختلاف در مقایسه کردن اون متغیرها در یک if می شوند.

یه کم بیشتر توضیح بدم ...

یک کد دارم که تو حالت x32 و x64 بصورت Application و x32 بصورت dll یک خروجی واحد میده، اما همون کد رو وقتی بصورت x64 بصورت dll فراخوانی میکنم، خروجی متفاوت میشه!

پس از Trace متوجه شدم که یک مقدار واحد در دو برنامه بصورت جزئی در اعشارهای کم ارزش با هم اختلاف پیدا کردند و در نتیجه تفاوت در خروجی یک f باعث شده که ادامه مسیر الگوریتم تغییر چیدا کنه!

می خواستم بدونم که این مشکل از کجا به وجود میاد و اینکه میشه کاری که حداقل یک جواب واحد داشته باشیم؟

آیا به خاطر x32 یا x64 بودن این مساله پیش اومده و یا اینکه وقتی کد بصورت x64 از داخل dll فراخوانی میشه مشکل به وجود میاد؟

آیا این مساله به خاطر تنظیمات کامپایلر به وجود اومده یا اینکه خود سیستم هم در اون دخیله؟ این توضیح رو بدم که با تغییر PC، خروجی ها یکسان شد!

ممنون