اطلاعیه

Collapse
No announcement yet.

مشکل در محاسبات با متغیر single

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

    مشکل در محاسبات با متغیر single

    سلام

    یه تیکه از برنامم اینه که البته با بیسکام نوشتم:
    Dim Chek1 As Single
    Chek1 = 1 * 0.1
    Lcd Chek1
    پس در واقع عددی که الان باید توی متغیر Chek1 باشه باید 0.1 باشه ولی چیزی که نمایش داده میشه و وجود داره خیلی عجیبه 0.09999996 عدد حاصل اون ضرب بالاست که نابودم کرده
    این رو هم امتحان کردم

    Dim Chek1 As Single
    Chek1 = 1 /10
    Lcd Chek1
    باز هم نتیجه 0.09999996 هستش خلاصه هنگ کردم :eek:
    ضمنا با مگا32 و بیسکام کار می کنم
    لطف میکنید اگه راهنمایی کنید




    #2
    پاسخ : مشکل در محاسبات با متغیر single

    سلام
    ببین
    عدد رو اگه با قالب single ذخیره کنی به صورت عدد با هشت رقم اعشار ذخیره میشه
    و این طبیعیه که توی ال سی دی همچین چیزی رو نمایش بده
    اما اگه میخوای دقیقا اون فرمتی که دوست داری روی ال سی دی نمایش بدی
    باید از دستور lcd fusing استفاده کنی
    و فرمت جوابو #.# اینجوری بزنی اونموقع جوابت دقیقا همین یک دهم میشه که میخوای
    البته اگه دیدی 0.0 داد
    فرمتو به این تغییر بده &.#
    موفق باشی

    دیدگاه


      #3
      پاسخ : مشکل در محاسبات با متغیر single

      معمولاً این اتفاقا وقتی میفته که چندبار یه عمل رو تکرار میکنی.

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

      حالا تعداد اعشار رو محدود کن ببین چی میشه.مثلاً 7 تاش کن. یا شش تا.
      ?Why not

      دیدگاه


        #4
        پاسخ : مشکل در محاسبات با متغیر single

        بچه ها ممنون از لطفو محبتتون
        ولی دستور
        Fusing
        رو کلا بیسکام برای من خطا میده نمی دونم چرا؟
        ممنون

        دیدگاه


          #5
          پاسخ : مشکل در محاسبات با متغیر single

          خواهش میکنم گلم.
          بگو چیکار کردی که درست شد.
          شاید کسی با این مشکل روبه رو شه یه روزی.
          بحثو کاملش کن عزیزم.
          ?Why not

          دیدگاه


            #6
            پاسخ : مشکل در محاسبات با متغیر single

            Config Single = Scientific , Digits = 7


            با این دستور اعداد اعشاریتو محدود کن مشکل حل می شه
            همانطور كه مايل نيستم بنده كسي باشم، حاضر نيستم آقاي كسي باشم. كساني كه مخالف آزادي ديگرانند، خود لياقت آزادي را ندارند.((آبراهام لينكن))

            قدرت شگفت انگيز نيروهاي خلاق و استعدادهاي نهفته آدمي هنگامي آشكار مي شود كه نيازي حياتي، تواناييهاي او را به فعاليت وادارد و كشش آرزويي، سراپاي وجودش را به جنب و جوش درآورد.((آبراهام لينكن))

            [img width=343 height=100]http://www.elecdesigner.com/uploads/PRO-DESIGNER-GROUP.jpg[/img]

            دیدگاه

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