اطلاعیه

Collapse
No announcement yet.

سوال در مورد خطای متغیر float

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سوال در مورد خطای متغیر float

    سلام دوستان :smile:
    راستش من یه سوالی برام پیش اومده،قبلا به نظرم جوابش رو توی یه تاپیکی دیده بودم،حالا با هر جور کلمه ای سرچ میکنم پیداش نمیکنم. :sad: برای همین تصمیم گرفتم تاپیک باز کنم.
    توی یه برنامه خیلی ساده چرا موقع دیباگ کردن مقادیر متغیر float با چیزی که من نوشتم متفاوته.راه حلش چیه و اینکه آیا در مواردی که نیاز به خواندن با دقت زیاد هست مشکل درست میکنه؟
    بعضی مواقع 0.2 رو 0.1999999999 نشون میده. بعد در ادامه محاسبات این میزان خطا با مقادیر دیگه ای که اونها هم خطا دارن همینجور جمع و ضرب میشه و ادامه پیدا میکنه.
    این قضیه اپسیلون خطا چیه؟
    یه عکس هم میگذارم تا ببینین.
    با تشکر :rolleyes:


    #2
    پاسخ : سوال در مورد خطای متغیر float

    float همینه دیگه !
    به خاطر همین میگن اگه متغییرتون اعشاریه هیچ وقت از == استفاده نکنید . چون اون اپسیلون خطا کار دستتون میده .
    به جاش از =< و => استفاده کنید .
    إِنَّ الَّذِینَ یُحِبُّونَ أَنْ تَشِیعَ الْفاحِشَهُ فِی الَّذِینَ آمَنُوا لَهُمْ عَذابٌ أَلِیمٌ فِی الدُّنْیا وَ الْآخِرَهِ وَ اللَّهُ یَعْلَمُ وَ أَنْتُمْ لا تَعْلَمُونَ.
    کسانى که دوست دارند زشتی ها در میان مردم با ایمان شیوع یابد عذاب دردناکى براى آنها در دنیا و آخرت است، و خداوند میداند و شما نمی‏دانید. (نور19)

    دیدگاه


      #3
      پاسخ : سوال در مورد خطای متغیر float

      نوشته اصلی توسط " سید محمد "
      float همینه دیگه !
      به خاطر همین میگن اگه متغییرتون اعشاریه هیچ وقت از == استفاده نکنید . چون اون اپسیلون خطا کار دستتون میده .
      به جاش از =< و => استفاده کنید .
      بسیار ممنونم از پاسخ شما :smile: :smile: :smile:
      راستش من می خواستم بدونم که چرا کامپایلر اعداد رو به این صورت ذخیره میکنه که بر اساس تحقیقاتم فهمیدم که اعداد اعشاری بر اساس استاندارد IEEE754 برای اعداد ممیز شناور در قالب دقت 32 بیتی Single Precision ذخیره میشن که به دلیل محدودیت در نمایش اعداد اعشاری،اعداد گرد میشن، که این سبب ایجاد اپسیلون خطا در مقایسه دو عدد میشه و همون طور که شما گفتین نباید از عملگر == استفاده بشه.

      دیدگاه


        #4
        پاسخ : سوال در مورد خطای متغیر float

        میتونید از دستورات گرد کردن واسه جاهایی که نیاز هست استفاده کنید تا حتی خودتون متد گرد کردن اعداد اعشاری رو واسه خودتون با امکاناتی که مایلید بنویسید...
        تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

        www.intelart.ir


        ساخت کنترلر دما PID فازي با AVR [آموزشی]

        دیدگاه

        لطفا صبر کنید...
        X