اطلاعیه

Collapse
No announcement yet.

تغیر کردن مقدار متغیر از نوع float ؟

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

    تغیر کردن مقدار متغیر از نوع float ؟

    سلام
    یه متغیر از نوع float داریم که مقدار اولیه اون 3239.01705 میباشد حالا این عدد رو با تابع ftoa و sprintf میفرستم برای PC ولی تو کامپیوتر مقدارش تغیر میکنه میشه 3239.01708 علت چیه؟

    من فکر میکنم خود تابع این عدد رو دسکاری میکنه یا میخواد گردش کنه یه همچین کارایی
    در ضمن از code vision هم استفاده میکنم
    ذكات علم ياد دادنه ....

    #2
    پاسخ : تغیر کردن مقدار متغیر از نوع float ؟

    متغیر نوع float یک متغیر ممیز شناور هست که طبق استاندارد IEEE دارای دقتی بین 7 تا 8 رقم هست.

    مقدار اولیه متغیر شما بدون احتساب محل ممیز 323901705 هست یعنی 9 رقم. یعنی همین الان انتظار دقتی بیش از میزان قابل نگهداری توسط این متغیر رو دارین. ضمنا توابعی مانند ftoa و sprintf چون بایستی این عدد رو بفرم رشته ای در بیارن مجبورن عملیاتی رو روش انجام بدن که اگه دقت این عملیات در مرز دقت عددی متغیر باشه ممکنه خروجی این توابع عددی متفاوت با اون چیزی که مد نظر ما هست رو تولید کنه.

    دیدگاه


      #3
      پاسخ : تغیر کردن مقدار متغیر از نوع float ؟

      تو Code vision اینجوریه یا کلا تو هر برنامه ایی چنیین مشکلی برای float هست؟

      حالا با این حساب راه حلی وجود داره ؟
      ذكات علم ياد دادنه ....

      دیدگاه


        #4
        پاسخ : تغیر کردن مقدار متغیر از نوع float ؟

        اگر شما به این میزان از دقت احتیاج داری بایستی از نوع double استفاده کنی که اونم فکر میکنم فقط کامپایلر IAR بتونه انجامش بده. یعنی WinAVR هم فقط float رو ساپورت میکنه.
        دقت double به 15 تا 16 رقم با معنی میرسه.

        دیدگاه

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