امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 3
  • 1
  • 2
  • 3
  • 4
  • 5
یه کوچولو کمک فوری درباره دستور sprintf
نویسنده پیام
pedram032 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 27
موضوع‌ها: 12
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 11
( 2 تشکر در 2 ارسال )
ارسال: #1
یه کوچولو کمک فوری درباره دستور sprintf
سلام . من میخوام با کدویژن مقدار متغیر اعشاری رو در ال سی دی نشون بدم، عدد اعشاری مثلا 0.75

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

کد:
   sprintf(buffer,"%f",adad);
   lcd_puts(buffer);
رقم بعد از اعشار چند رقمی میشه و تغییر میکنه و ثابت نیست. چه تغییری باید در دستور sprintf بدم که صفرها رو نشون نده؟؟؟؟
۰۶-دى-۱۳۹۵, ۱۴:۰۸:۲۹
ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13641
( 14739 تشکر در 4686 ارسال )
ارسال: #2
RE: یه کوچولو کمک فوری درباره دستور sprintf
سلام مهندس یه سر به این لینک بزن و برنامه ftoa دانلود کن فکر کنم جوابتو بگیری
http://www.iranled.com/forum/thread-2517...#pid180472

۰۶-دى-۱۳۹۵, ۱۴:۴۳:۲۳
ارسال‌ها
پاسخ
تشکر شده توسط : babyy
pedram032 آفلاین
كاربر تک ستاره
*

ارسال‌ها: 27
موضوع‌ها: 12
تاریخ عضویت: خرداد ۱۳۹۱

تشکرها : 11
( 2 تشکر در 2 ارسال )
ارسال: #3
RE: یه کوچولو کمک فوری درباره دستور sprintf
ممنون ولی این اون نبود
۰۶-دى-۱۳۹۵, ۱۵:۰۴:۳۲
ارسال‌ها
پاسخ
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13641
( 14739 تشکر در 4686 ارسال )
ارسال: #4
RE: یه کوچولو کمک فوری درباره دستور sprintf
در زبان  C برای تبدیل عدد اعشاری به رشته باید از دستور ftoa  استفاده بشه sprintf فقط برای موارد صحیح کار برد داره
موفق باشید

۰۶-دى-۱۳۹۵, ۱۶:۵۴:۵۷
ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر, babyy
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #5
RE: یه کوچولو کمک فوری درباره دستور sprintf
توی الکترونیک هادی جان بهتر میدونه؛ دخالت نمیکنم

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

ولی در حالی که کدی که در ادامه من نوشتم این کد رو تولید میکنه:
   
یعنی 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 و . . .




خنده بلد − بهینه شده برای ورژن جدید اول صبحی چقدر چرت پرت میگم خنده بلد − بهینه شده برای ورژن جدید خنده بلد − بهینه شده برای ورژن جدید الان جال میده این همه نوشتم مشکل بنده خدا حل نشه بازم خنده بلد − بهینه شده برای ورژن جدید خنده بلد − بهینه شده برای ورژن جدید
۰۷-دى-۱۳۹۵, ۰۶:۱۴:۴۱
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73, 1نفر
babyy آفلاین
بازنشسته
*****

ارسال‌ها: 3,095
موضوع‌ها: 141
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 35081
( 26090 تشکر در 9068 ارسال )
ارسال: #6
RE: یه کوچولو کمک فوری درباره دستور sprintf
راستی اینجور مواقع بهترین راه دیباگ کردن برنامه هست که ببینی مشکل از چیه

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

صددردصد کدویژن هم این امکان رو داره که مرحله به مرحله بتونی کدت رو دیباگ کنی و مشکلاتش رو پیدا کنی
۰۷-دى-۱۳۹۵, ۰۶:۱۸:۳۶
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : hadikh73
hadikh73 آفلاین
مدیــر کـل سایـت
*******

ارسال‌ها: 1,219
موضوع‌ها: 43
تاریخ عضویت: شهریور ۱۳۹۱

تشکرها : 13641
( 14739 تشکر در 4686 ارسال )
ارسال: #7
RE: یه کوچولو کمک فوری درباره دستور sprintf
(۰۷-دى-۱۳۹۵, ۰۶:۱۸:۳۶)پروتیوbabyy نوشته است: راستی اینجور مواقع بهترین راه دیباگ کردن برنامه هست که ببینی مشکل از چیه

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

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

دقیقا با دیباگ کردن مشکل حل میشه و کدویژن این امکان به درستی نداره
برای دیباگ کردن باید فایل با فرمت cof که کدویژن تولید میکنه رو با پروتئوس باز کنی و مرحله به مرحله مقدار متغیر بافر رو چک کنی و ببنی مشکل از کجاس

۰۷-دى-۱۳۹۵, ۱۱:۲۷:۴۵
ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر, babyy
MZN84 آفلاین
تازه وارد

ارسال‌ها: 3
موضوع‌ها: 0
تاریخ عضویت: دى ۱۳۹۲

تشکرها : 3
( 5 تشکر در 3 ارسال )
ارسال: #8
RE: یه کوچولو کمک فوری درباره دستور sprintf
کد:
   sprintf(buffer,"%0.2f",adad);
۰۹-دى-۱۳۹۵, ۱۴:۲۵:۰۹
ارسال‌ها
پاسخ
تشکر شده توسط : babyy, hadikh73


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  کمک فوری در رابطه با کدنویسیc++ shadab72 17 10,498 ۱۸-اردیبهشت-۱۳۹۸, ۱۰:۵۲:۵۸
آخرین ارسال: Ghoghnus
  دستور c# marzie.1378 6 4,459 ۱۸-فروردین-۱۳۹۴, ۱۷:۰۸:۵۳
آخرین ارسال: marzie.1378
  درخواست کمک فوری 75nazanin 1 2,362 ۱۷-اسفند-۱۳۹۳, ۱۳:۱۸:۰۲
آخرین ارسال: NO DONGLE
  [فوری] چندتا سوال فوری برنامه سازی c++ panabadi 5 7,823 ۲۲-آذر-۱۳۹۳, ۱۰:۳۱:۴۸
آخرین ارسال: lord_viper
  درخواست (فوری)برنامه توسط c++ farah.luci 1 3,525 ۳۱-مرداد-۱۳۹۱, ۲۱:۱۱:۰۳
آخرین ارسال: masterhe3ar
  دو تا سوال فوری فوتی برنامه نویسی c++ لطفا samadblaj 2 4,438 ۳۱-مرداد-۱۳۹۱, ۲۱:۰۷:۳۶
آخرین ارسال: masterhe3ar
  [سوال] فوری آیلینو 2 3,847 ۱۹-اردیبهشت-۱۳۹۱, ۱۲:۲۹:۵۶
آخرین ارسال: sjh
  کمک فوری BlackSmart 1 2,909 ۲۸-فروردین-۱۳۹۱, ۰۶:۲۸:۵۴
آخرین ارسال: one hacker alone
Sad [سوال] کمک در خطایابی برنامه (کمک فوری) E.EINITABAR 2 3,564 ۰۹-بهمن-۱۳۹۰, ۱۴:۱۶:۴۴
آخرین ارسال: mahbooob
  کمک فوری BlackSmart 4 4,447 ۰۹-بهمن-۱۳۹۰, ۱۲:۱۵:۴۱
آخرین ارسال: babyy

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS