اطلاعیه

Collapse
No announcement yet.

مشکل در کار با اعداد اعشاری!

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

    مشکل در کار با اعداد اعشاری!

    سلام دوستان،

    من یه برنامه با atmega128 برای خواندن کارتهای مایفر نوشتم، وقتی که می خوام عدد هگز خونده شده رو که هشت رقم هست، به دسیمال تبدیل کنم، چون ممکنه عدد مورد نظر خیلی بزرگ بشه از float استفاده کردم... اما اعداد از یه حدی که بالاتر بره خطا وجود داره. حتی وقتی خیلی ساده می خوام با دستور printf ، عدد بزرگ 0xffff ffff رو که تو یه متغیر float ذخیره شده نشون بدم، بدون اینکه هیچ عملیاتی روش انجام بدم باز هم خطا وجود داره. من با کامپایلر کدویژن کار می کنم، از طریق مسیر زیر:
    Project/configure/C compiler/printf features
    رو روی float, width, precision تنظیم کردم، ولی مشکلم حل نشده. ورژن کامپایلر هم V2.05.3 هست.

    دوستان اگه بتونید، راهنمایی ام کنید، خیلی ممنونتون میشم.

    با سپاس
    جعفری
    همیشه بزرگوار تر از آن باشید که برنجید
    و نجیب تر از آن باشید که برنجانید!

    #2
    پاسخ : مشکل در کار با اعداد اعشاری!

    با سلام
    متاسفانه منم با این مشکل برخورد کردم.
    چونکه float 32 بیت هستش و 8 بیتش برای تعداد اعداد اعشاری + علامت اون + علامت عدد استفاده میشه
    فقط 24 بیت میمونه که میتونه عدد توش قرار بگیره ( فارق از ممیز)

    که برای اعداد با طول بزرگ مشکل ساز میشه ....

    اگه کسی راه حلی داره استقبال می کنیم ...

    شما بهتره از فرمت های دیگه مثل long int استفاده کنید که خیلی راحت تره ....

    موفق باشید

    دیدگاه


      #3
      پاسخ : مشکل در کار با اعداد اعشاری!

      اگر با کامپایلر قدرتمندی مثل AVR-GCC کار کرده باشید میتونید اعداد صحیح تا 64 بیت هم تعریف کنید:
      unsigned long long int

      لینک زیر انواع تایپ های متغیر ها رو در این کامپایلر معرفی میکنه:


      برای کدویژن نمیدونم همین روش جواب میده یا نه...میتونید با همین روش بالا یک متغیر تعریف کنید ببینید نتیجه چی میشه...
      تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

      www.intelart.ir


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

      دیدگاه


        #4
        پاسخ : مشکل در کار با اعداد اعشاری!

        تو کد ویژن جدید(3.12) از long int برای نسخه های کرک شده پشتیبانی میشه.
        اما long long int فقط در نسخه professional در دسترسه.
        آیا جهالت نیست که آدمی ساعات شیرین امروز را فدای روزهای آینده کند؟

        دیدگاه

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