با سلام خدمت دوستان.
من یه مشکلی با نحوه تقسیم اعشاری در++ C دارم. بعد از انجام تقسیم اعشاری یه مقدار خیلی ناچیزی باقی مانده بوجود می آد که برام مشکل درست میکنه.
float a=1;
float b=5;
float c=a/b
در اینجا اگر Cرو با 0.2مقایسه کنیم میبینیم که مساوی نیست!!//
cout<< (c-0.2) ;//not zero

به خاطر روشی که برای ذخیره اعداد اعشاری توی حافظه استفاده میشه این مشکلات پیش میاد مثلا توی این کد ممکنه c بشه 0.2000001 . اگه شما میخوای با یه مقدار اعشاری دیگه مقایسه ش کنی که برابر هست یا نه میتونی از قدر مطلق اختلافشون با یه مقدار خیلی کم(EPSILON) استفاده کنی و مقایسه رو به صورت تقریبی انجام بدی مثلا :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
که اینجا واسه قدر مطلق از fabs که در math.h هست استفاده شده. میشد بجاش از 2 تا مقایسه استفاده کرد
این واسه مقایسه کردنش.
ولی واسه چاپش با cout , برای اینکه به فرم نمایش علمی نمایش در نیاد و این مشکل رو نداشته باشه از std::fixed باید موقع cout استفاده کنی :
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینطوری خروجی 0.00000 میشه. برای کنترل تعداد اعشار هم میتونی از setprecision استفاده کنی که باید قبلش iomanip رو include کنی:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اینجا خروجی 0.00 میشه.