موسسه خیریه محک

شهر ریاضی بازی-ریاضی

مقایسه‌ی دو مقدار اعشاری در برنامه

+1 امتیاز
460 نمایش

به دلیل تقریبی بودن اعداد اعشاری در C++ گاهی لازم می‌شه به جای تساوی دقیق از تفاضل کوچیک استفاده کنیم. مثلاً

float f1, f2;
cin>>f1>>f2;
if(f1-f2 < epsilon) ...

سوال. حالا مقدار epsilon چند باشه که برای همه‌ی اعداد اعشاری جواب بده؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده پنجشنبه ۸ فروردین ۱۳۹۲ در C++ توسط prodo  
بازتگ شده پنجشنبه ۱۷ مرداد ۱۳۹۲ توسط prodo

1 پاسخ

0 امتیاز

در سر فایل limits تابعی وجود داره به اسم epsilon() که می‌شه دقیقاً به همین شکل ازش استفاده کرد.

numeric_limits<float>::epsilon()
numeric_limits<double>::epsilon()
numeric_limits<long double>::epsilon()

این سه مقدار برای مقایسه‌ی اعداد اعشاری float، double و long double به کار می‌روند.

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده سه شنبه ۱۰ اردیبهشت ۱۳۹۲ توسط prodo