ايران ويج

نسخه‌ی کامل: یه کوچولو کمک فوری درباره دستور sprintf
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام . من میخوام با کدویژن مقدار متغیر اعشاری رو در ال سی دی نشون بدم، عدد اعشاری مثلا 0.75

وقتی این مقدار رو با دستور زیر نمایش میدم، چند تا صفر بعد از ممیز هم نشون داده میشه، مثلا 0.750000

کد:
   sprintf(buffer,"%f",adad);
   lcd_puts(buffer);
رقم بعد از اعشار چند رقمی میشه و تغییر میکنه و ثابت نیست. چه تغییری باید در دستور sprintf بدم که صفرها رو نشون نده؟؟؟؟
سلام مهندس یه سر به این لینک بزن و برنامه ftoa دانلود کن فکر کنم جوابتو بگیری
http://www.iranled.com/forum/thread-2517...#pid180472
ممنون ولی این اون نبود
در زبان  C برای تبدیل عدد اعشاری به رشته باید از دستور ftoa  استفاده بشه sprintf فقط برای موارد صحیح کار برد داره
موفق باشید
توی الکترونیک هادی جان بهتر میدونه؛ دخالت نمیکنم

ولی توی کامپیوتر و حافظه این چیزی که شما نوشتید این رو تولید میکنه:
[attachment=13859]
یعنی این عدد: 0.75000

ولی در حالی که کدی که در ادامه من نوشتم این کد رو تولید میکنه:
[attachment=13860]
یعنی 0.75


*نکته: الان بافر (Buffer) رشته هستش؛ در نتیجه وقتی اونو به توابعی بدیم که قصد چاپ کردنش رو داره (که فکر میکنم lcd_puts هم از این قاعده مستثنی نیست)؛ اونقدر پیش میره تا به NULL یا همون 0\ (که در عکس های بالا نشون داده شده) برسه

*نکته ۲: حالا چرا رقم تعداد ارقام بعد از اعشار شما متفاوت هست؟ به همین دلیل که توی نکته یک گفتم؛ مثلا توی عکس اولی که گذاشتم؛ خونه 0\ من مثلا توی خونه پنچم قرار داشت



کدی که من نشوتم اینه:

کد php:
#include <stdio.h>
int main(){
    float adad 0.75;
    char buffer[20];
    sprintf(buffer,"%.2f",adad);
    return 1;


همونطور که میبینی از
کد php:
%.2f 

استفاده کردم! ه این معنی که تا دو رقم اعشار رو واسم نگه دار؛ مثلا اگه عددم بود 0.75232354 باز هم تا دورقم رو نگه میداشت و همچنین اگه باشه 0.7 باز هم تا دورقم رو نگه میداره که نتیجه میشه 0.70 و . . .




خنده بلد − بهینه شده برای ورژن جدید اول صبحی چقدر چرت پرت میگم خنده بلد − بهینه شده برای ورژن جدید خنده بلد − بهینه شده برای ورژن جدید الان جال میده این همه نوشتم مشکل بنده خدا حل نشه بازم خنده بلد − بهینه شده برای ورژن جدید خنده بلد − بهینه شده برای ورژن جدید
راستی اینجور مواقع بهترین راه دیباگ کردن برنامه هست که ببینی مشکل از چیه

اون عکسهایی که من گذاشتم برات رو توی gdb در لینوکس اجراش کردم و حافظه رو قدم به قدم خوندم ببنم مقادیری که توش میره چیا هست

صددردصد کدویژن هم این امکان رو داره که مرحله به مرحله بتونی کدت رو دیباگ کنی و مشکلاتش رو پیدا کنی
(۰۷-دى-۱۳۹۵, ۰۶:۱۸:۳۶)پروتیوbabyy نوشته است: [ -> ]راستی اینجور مواقع بهترین راه دیباگ کردن برنامه هست که ببینی مشکل از چیه

اون عکسهایی که من گذاشتم برات رو توی gdb در لینوکس اجراش کردم و حافظه رو قدم به قدم خوندم ببنم مقادیری که توش میره چیا هست

صددردصد کدویژن هم این امکان رو داره که مرحله به مرحله بتونی کدت رو دیباگ کنی و مشکلاتش رو پیدا کنی

دقیقا با دیباگ کردن مشکل حل میشه و کدویژن این امکان به درستی نداره
برای دیباگ کردن باید فایل با فرمت cof که کدویژن تولید میکنه رو با پروتئوس باز کنی و مرحله به مرحله مقدار متغیر بافر رو چک کنی و ببنی مشکل از کجاس
کد:
   sprintf(buffer,"%0.2f",adad);