اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

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

استفاده از تساوی برای مقایسه‌ی دو عدد حقیقی

+2 امتیاز
338 نمایش

یه برنامه نوشتم که تو یه قسمتش دو تا عدد حقیقی رو با عملگر تساوی باهم مقایسه می‌کنه (a==b)
اما برنامه خیلی دیر (یا هیچ وقت) متوقف نمی‌شد. بعد فهمیدم به این دلیل هست که اعداد حقیقی تو C++ به صورت تقریبی نگهداری می‌شن. تساوی گاهی جواب نمی‌ده. خوب پس چطوری می‌شه این کار و انجام داد آخه؟

برنامه‌ای که تست نشده کار نخواهد کرد (Stroustrup, Bjarne)
پرسیده شده جمعه ۱۰ آذر ۱۳۹۱ در C++ توسط CPP_Crawler3  
بازتگ شده جمعه ۲۳ فروردین ۱۳۹۲ توسط admin

1 پاسخ

–1 امتیاز

برای من وقتی مقایسه بین دو عدد حقیقی انجام میدم مشکلی پیش نمیاد!
مثلا برای کد زیر که حتی اختلافشون در 0.000001 اشون هست:

#include<iostream.h>
int main(){
    double a=1.581234, b=1.581235;
    if (a==b)
               cout<<a<<endl<<b;

    system("pause");
    return 0;
    }

این کد کاملا درست اجرا میشه.

پاسخ داده شده جمعه ۲۲ دی ۱۳۹۱ توسط CPP_Crawler4  

دلیلی وجود نداره که برای این مقدار مشخص نادرست باشه. این‌جا نمی‌شه به صرف درست بودن تساوی یک مقدار تفاوت گفت که مشکلی وجود نداره