信用卡分期付款,最低还款额下的利息明细算法(vc++,AppWizard,singledocument,OnDraw())
const totalnum=48000,N=12,M=24;//you can modify the num
const num=totalnum/N;
double newbalance[M],balance[M],lowbalance[M],interest[M],rest[M];
double totallowbalance=0,totalinterest=0;
newbalance[0]=num;
balance[0]=num;
lowbalance[0]=num/10;
interest[0]=0;
rest[0]=totalnum;
for(int i=1;i<=M-1;i++)
{
balance[i]=num+balance[i-1]-lowbalance[i-1];
newbalance[i]=num+balance[i-1]-lowbalance[i-1]+(balance[i-1]-lowbalance[i-1])*0.0005*30;
lowbalance[i]=newbalance[i]/10;
interest[i]=(balance[i-1]-lowbalance[i-1])*0.0005*30;
rest[i]=rest[i-1]-lowbalance[i];
}
CString str5,str6;
pDC->TextOut(20,0 ,"Newbalance");
pDC->TextOut(120,0 ,"Balance");
pDC->TextOut(220,0 ,"Lowbalance");
pDC->TextOut(320,0 ,"Interest");
pDC->TextOut(420,0 ," pay");
for(int j=0;j<M-1;j++)
{
if(rest[j]>0)
{
totallowbalance+=lowbalance[j];
totalinterest+=interest[j];
CString str0,str1,str2,str3,str4,str44;
str0.Format("%d",j+1);
str1.Format("%lf",newbalance[j]);
str2.Format("%lf",balance[j]);
str3.Format("%lf",lowbalance[j]);
str4.Format("%lf",interest[j]);
str44.Format("%lf",rest[j]);
pDC->TextOut(0,j*15+30,str0);
pDC->TextOut(30,j*15+30,str1);
pDC->TextOut(130,j*15+30,str2);
pDC->TextOut(230,j*15+30,str3);
pDC->TextOut(330,j*15+30,str4);
pDC->TextOut(430,j*15+30,str44);
str5.Format("%lf",totallowbalance);
str6.Format("%lf",totalinterest);
pDC->TextOut(230,M*15+30,str5);
pDC->TextOut(340,M*15+30,str6);
//if(totallowbalance-totalinterest>totalnum)
}
else
break;
}
const totalnum=48000,N=12,M=24;//you can modify the num
const num=totalnum/N;
double newbalance[M],balance[M],lowbalance[M],interest[M],rest[M];
double totallowbalance=0,totalinterest=0;
newbalance[0]=num;
balance[0]=num;
lowbalance[0]=num/10;
interest[0]=0;
rest[0]=totalnum;
for(int i=1;i<=M-1;i++)
{
balance[i]=num+balance[i-1]-lowbalance[i-1];
newbalance[i]=num+balance[i-1]-lowbalance[i-1]+(balance[i-1]-lowbalance[i-1])*0.0005*30;
lowbalance[i]=newbalance[i]/10;
interest[i]=(balance[i-1]-lowbalance[i-1])*0.0005*30;
rest[i]=rest[i-1]-lowbalance[i];
}
CString str5,str6;
pDC->TextOut(20,0 ,"Newbalance");
pDC->TextOut(120,0 ,"Balance");
pDC->TextOut(220,0 ,"Lowbalance");
pDC->TextOut(320,0 ,"Interest");
pDC->TextOut(420,0 ," pay");
for(int j=0;j<M-1;j++)
{
if(rest[j]>0)
{
totallowbalance+=lowbalance[j];
totalinterest+=interest[j];
CString str0,str1,str2,str3,str4,str44;
str0.Format("%d",j+1);
str1.Format("%lf",newbalance[j]);
str2.Format("%lf",balance[j]);
str3.Format("%lf",lowbalance[j]);
str4.Format("%lf",interest[j]);
str44.Format("%lf",rest[j]);
pDC->TextOut(0,j*15+30,str0);
pDC->TextOut(30,j*15+30,str1);
pDC->TextOut(130,j*15+30,str2);
pDC->TextOut(230,j*15+30,str3);
pDC->TextOut(330,j*15+30,str4);
pDC->TextOut(430,j*15+30,str44);
str5.Format("%lf",totallowbalance);
str6.Format("%lf",totalinterest);
pDC->TextOut(230,M*15+30,str5);
pDC->TextOut(340,M*15+30,str6);
//if(totallowbalance-totalinterest>totalnum)
}
else
break;
}