سلام دوستان سوالی در مورد اعداد اعشاری داشتم.
اول این که ورودی به صورت ****.** است.
یعنی دو عدد صحیح و چهار عدد اعشاری. می خوام اگه ورودی غیر از این بود برنامه از کاربر بخواهد که عدد را اصلاح کنه. یعنی تعداد اعداد صحیح و یا اعشاری کم تر و یا بیشتر بود.
خودم راهی به ذهنم نرسید.

در ضمن کد زیر برای جدا کردن یک عدد که به صورت ****.** است به بخشهای دو تایی (یعنی دو رقم دو رقم ) است... (برای یک محسابه باید به این صورت درآید). اما مشکل در رقم آخر اعشاری است که بعضی مواقع خود سی عدد را گرد می کند.... یعنی مثلا عدد 21.0000 به صورت 20.99999 در نظر می گیرد و محاسبه دقیق نمی شود....
من از کد زیر برای رفع این مشکل استفاده کردم... البته توی یکی از پست ها یه چیزایی پیدا کردم و از اون استفاده کردم ...


Double = ((int)(Double*100))/100.0;

int s = (int) Double;
if (Double -= s<0.50)
s+= 1;
printf("%lf\n",Double);
printf("%d\n",s);


اما توی خود اون پست هم امده بود که روش کامل نیست.

می خواستم ببیم راه بهتری برای این کار وجود داره....که می دونم داره......



همه کدی هم که نوشتم این حاست.....
ممنون می شم به دو سوالم پاسخ بدید....


#include <stdio.h>
#include<conio.h>

int main(void)
{
double Double = 16.1221;
int T = (int) Double;

printf("%d\n",T);
Double -= T;
printf("%.4lf\n",Double);

Double *= 100;
int min = (int) Double;

printf("%d\n",min);

Double -= min;
printf("%lf\n",Double);
Double *= 100;
printf("%lf\n",Double);
Double = ((int)(Double*100))/100.0;

printf("%lf\n",Double);
int s = (int) Double;
printf("%d\n",s);
if (Double -= s<0.50)
s+= 1;
printf("%lf\n",Double);
printf("%d\n",s);
getch();
return 0;
}