اطلاعیه

Collapse
No announcement yet.

عدم نمایش عدد اعشاری در LCD ؟

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

    عدم نمایش عدد اعشاری در LCD ؟

    چرا در برنامه زیر حاصل تقسیم x بر y که میشه 3.33 بر روی ال سی دی نشون نمیده و فقط 3 خالی رو نمایش میده :
    اینم برنامش :

    #include <mega16.h>
    #include <stdio.h>
    #include <delay.h>

    // Alphanumeric LCD functions
    #include <alcd.h>

    int x,y;
    float z;
    char lcd_buff[20];

    void main(void)
    {
    x=10;
    y=3;
    z=x/y;
    // Characters/line: 16
    lcd_init(16);

    while (1)
    {

    sprintf(lcd_buff,"%5.3f",z);
    lcd_gotoxy(0,0);
    lcd_puts(lcd_buff);

    }
    }
    خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

    #2
    پاسخ : عدم نمایش عدد اعشاری در LCD ؟

    مورد اول باید type casting انجام بدین. دوما باید از قسمت تنظیمات. تنظیمات sprintf رو بزارید روی float.
    چرا ناراحتی پاتریک!
    + امروز ی بچه دیدم سرچهارراه گل میفروخت
    - از دیدنش ناراحت شدی؟
    + نه
    پس چی ناراحتت کرده
    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
    ------------------------------------------------------------------------------------------------------
    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
    ------------------------------------------------------------------------------------------------------
    محصولات

    دیدگاه


      #3
      پاسخ : عدم نمایش عدد اعشاری در LCD ؟

      تنظیمات رو روی float گذاشتم اما type casting چیه ؟
      خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

      دیدگاه


        #4
        پاسخ : عدم نمایش عدد اعشاری در LCD ؟

        نوشته اصلی توسط fmicro نمایش پست ها
        تنظیمات رو روی float گذاشتم اما type casting چیه ؟
        یعنی نوع فعلی یک مقدار را با نوشتن نوع مورد نظر در پشتش ، عوض کنی

        کد:
        z=(float)x/(float)y;
        حالا x و y از نوع float محسوب میشوند و نتیجه هم float خواهد بود
        البته نوشتن یکی از float ها هم کافی است

        دیدگاه


          #5
          پاسخ : عدم نمایش عدد اعشاری در LCD ؟

          متوجه نشدم میشه بیشتر توضیح بدید ؟
          خدایا یکی بزرگترین آرزویهایم در این دنیا این است که همه مردم حالشان خوب باشد و احساس خوشبختی داشته باشند....

          دیدگاه


            #6
            پاسخ : عدم نمایش عدد اعشاری در LCD ؟

            نوشته اصلی توسط fmicro نمایش پست ها
            متوجه نشدم میشه بیشتر توضیح بدید ؟



            منظورم این بود که در زبان سی ، حاصل جمع یک عملیات ریاضی
            بین دو عدد ، از جنس همان دو عدد است
            مثلا در مثال زیر چون دو طرف تقسیم ، عدد صحیح هستند
            پس نتیجه هم عدد صحیح خواهد بود، یعنی به جای یک و نیم ، عدد یک خواهد بود

            کد:
            z=3/2;
            ولی اگر ما همان نتیجه یک ونیم را میخواهیم ، باید دو طرف تقسیم از نوع
            اعشاری باشند ، یعنی در مثال زیر ، عدد حاصل واقعا یک ونیم خواهد بود

            کد:
            z=3.0/2.0;
            حال میتوان با گذاشتن جفت پارانتز حاوی اسم نوع ، پشت مقادیرمان ، نوع آنها را عوض کنیم
            و این یعنی کستیگ
            مثال زیر دقیقا نتیجه مثال بالا را میدهد چون اعداد صحیح را تبدیل به اعشاری کرده ایم

            کد:
            z=(float)2 / (float)3;

            ممکن است طریقه نوشتن بالا به نظر شما زیاده کاری به نظر برسد
            همان ممیز گذاشتن برای اعداد راحت تر نیست ؟
            بله ولی اگر دو طرف عملیات شما به حای اعداد ، متغیر باشند چه؟
            ممیز را چطور به متغیر میچسبانید؟
            ولی با کستینگ اینکار راحت است

            کد:
            int x=3,y=2;
            z=(float)x / (float y);

            دیدگاه

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