اطلاعیه

Collapse
No announcement yet.

پیشفرض float در دستور sprintf

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

    پیشفرض float در دستور sprintf

    سلام
    من با دستور sprintf در keil و فرمت %f مشکل دارم
    اگه من یک ریجیستر float داشته باشم و بخام اونو روی ال سی دی نمایش بدم من دقیقا مثل کد ویژن عمل کردم خطا نمیده ولی چیزی روی ال سی دی نمایش نمیده ولی اگه با فرمت های %d - %u ...... استفاده کنم روی ال سی دی نمایش میده . مشکل من کجاست ؟؟

    نقل قول:
    float i;
    char str[16];


    void main(){

    sprintf (str,"%3.1f",i);


    }
    {خلاف قوانین - حذف شد}

    #2
    پاسخ : پیشفرض float در دستور sprintf

    سلام
    من قبلا در باره این دستور خیلی گشتم و طبق توضیحات برنامه نویسان غربی این دستور برای float کار نمی کنه روش کار به این صورت هست

    1-ابتدا قسمت صحیح رو جدا می کنیم
    2-قسمت صحیح رو از عدد کم می کنیم و به تعداد اعداد بعد از اعشار که تمایل داریم داشته باشیمشون در 10 ضرب کنین مثلا اگر .123 باشه در 1000 ضرب می کنیم که داشته باشیم 123
    حالا رشته رو به صورت %d.%d نمایش می دهیم یعنی
    پس spirintf رو به این صورت می نویسیم

    sprintf(str,"%d.%d",(int)i,(i-((int)i))*1000);

    هیچ دانش آموزی نیست که به در خانۀ دانشمندی آمد و شد کند, مگر این که خداوند برای هر گامی که برمی دارد عبادت یک سال را برایش رقم زند.

    دیدگاه

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