چطور میتونم با c برنامه ای بنویسم که عدد رو به دو قسمت اعشاری و صحیح تبدیل کنه؟وهمینطور تعداد رقم های صحیح رو بنویسه لطفا کمکم کنید :11:من واقعا موندم :41:
چطور میتونم با c برنامه ای بنویسم که عدد رو به دو قسمت اعشاری و صحیح تبدیل کنه؟وهمینطور تعداد رقم های صحیح رو بنویسه لطفا کمکم کنید :11:من واقعا موندم :41:
وقتی عدد اعشاری تونو تو یه double مثلا با نام dbl ذخیره کردین ، می تونین اونو تو یه متغیر int مثلا با نام integer بذارین . حالا این integer قسمت صحیح عدد شماست . بعد اگه integer رو از dbl کم کنین و نتیجه رو تو یه متغیر double بذارین قسمت اعشاری تون هم بدست میاد .
در مورد دومی هم تو یه حلقه عددتون رو بر 10 تقسیم کنین و یدونه counter رو افزایش بدین تا وقتی که عددتون صفر بشه .
این روش امکان پذیره ولی به هیچ عنوان یک روش کارامد و استاندارد نیست !نقل قول:
وقتی عدد اعشاری تونو تو یه double مثلا با نام dbl ذخیره کردین ، می تونین اونو تو یه متغیر int مثلا با نام integer بذارین . حالا این integer قسمت صحیح عدد شماست . بعد اگه integer رو از dbl کم کنین و نتیجه رو تو یه متغیر double بذارین قسمت اعشاری تون هم بدست میاد .
شما میتونید از تابع استاندارد modf استفاده کنید که منحصرآ برای چنین کاری طراحی شده است. پیش نمونه این تابع رو میتونید در زیر مشاهده کنید:
[PHP]
double modf(double num, int *i);[/PHP]
این تابع یک عدد اعشاری را به دو قسمت صحیح و اعشاری تجزیه می کند، قسمت اعشار عدد num توسط تابع برگردانده میشود و قسمت صحیح ان در متغیر (اشاره گر) i قرار می گیرد. در ضمن این تابع در سرفایل math.h تعریف شده است.
مثال:
[PHP]#include <stdio.h>
#include <math.h>
#include <conio.h>
int main()
{
double num = 12.354;
int a;
double b;
b = modf(num, &a);
printf("b = %g ",b);
printf("a = %d ",a);
getch();
return 0;
}[/PHP]
خروجی :
[PHP]b = 0.354
a = 12[/PHP]
البته تا جاییکه من میدونم پارامتر دوم تابع modf باید از نوع اشاره گر به double یا long double باشه.
بله ، حق با شماست ولی به دلیل اینکه متغیر i بخش صحیح عدد رو برمی گردونه پس بدون از دست دادن هیچ دیتایی میتونیم از اشاره گرهای صحیح (int) استفاده کنیم.نقل قول:
البته تا جاییکه من میدونم پارامتر دوم تابع modf باید از نوع اشاره گر به double یا long double باشه.
دلیل استفاده از نوع int هم روشنی بیشتر برنامه بود.