使用信用卡很长时间了,但从来没有取过现金。最近因为懒的缘故(也不能这么说,主要原因是距离工资卡所属的银行太远了囧),于是就用信用卡当做银行卡,在最近的取款机取零用钱。5号是建行信用卡的账单日,银行如期发来对账单。逐一核对,发现交易明细中出现了利息9.5元的记录,很奇怪,于是百度了一下建行信用卡的利息计算。不查不知道,一查吓一跳,下面就来分析一下。
首先,作为白痴型选手,先来讲一下建行信用卡(基本是所有信用卡)的是怎么计算取现利息的,下面是我百度到的内容:
1、我也在用建行的,首先取现是没有免息期的,只要取现就会收利息。 2、你的信用额度是1000元,取现额是信用额度的30%,也就是300元。 3、取现手续费:境内:取现金额的0.5%,最低2元,最高50元。 4、滞纳金:最低还款额未还部分的5%,最低1美元或5元人民币(币种与相应的最低还款额相同)。 我说的很明白了吧!~看了以上规则,核对一下自己的卡,除了信用额度和比例外,其余完全正确。于是不禁一身冷汗... 原来取现和刷卡消费不一样,没有免息期!看到这条,希望那些跟我一样不愿意自己的辛苦钱白白给银行抢去的选手们赶紧绕道多走几步吧,别为了省几步路而去为银行增加收益!其次,取现是按照复利计算的,如果你还不明白,那么我们来算一帐,下面是复利的计算规则:
假设本金为a,利率为r,复利计算次数为n,于是就可以得出下表:
次数 本金 利息
1 a a*r
2 a*(1+r) a*(1+r)*r
3 a*(1+r)^2 a*(1+r)^2*r
4 a*(1+r)^3 a*(1+r)^3*r
...
n a*(1+r)^(n-1) a*(1+r)^(n-1)*r
下面我们就来编写一个程序计算复利,看代码:
#include <stdlib.h>
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
int main(int argc,char** argv)
{
if(argc<4)
{
cout<<"No enough parameters!"<<endl;
cout<<"Use command:\n ComIntCal Principal Rate Times"<<endl;
return 0;
}
double dPrincipal = atof(argv[1]); //初始本金
double dRate = atof(argv[2]); //利率
int nTimes = atoi(argv[3]); //复利次数
cout<<"Principal: "<<dPrincipal<<endl<<"Interest rate: "<<dRate<<endl<<"Times: "<<nTimes<<endl;
cout<<"Times\tPrincipal\tInterest\tTotal\t\tTotal Interest"<<endl;
cout<<setiosflags(ios::right)<<setiosflags(ios::fixed)<<setprecision(6);
double dInterest,dTotal;
double dOrgPrincipal = dPrincipal;
dInterest = 0;
for(int i=1;i<=nTimes;i++)
{
dPrincipal += dInterest;
dInterest = dPrincipal*dRate;
dTotal = dPrincipal + dInterest;
cout<<i<<"\t"<<dPrincipal<<"\t"<<dInterest<<"\t"<<dTotal<<"\t"<<dTotal-dOrgPrincipal<<endl;
}
cout<<setiosflags(ios::left)<<setprecision(6);
return 0;
}
好,简单起见,直接gcc编译:g++ CompoundInterestCal.cpp -o ComIntCal.exeOK,搞定了,下面就来分析一下我的账单中9.5的利息是怎么来的。先来说一下具体的账单情况,列表中有如下取现记录:
日期 金额
7.16 700
8.1 500
8.4 500
好,下面就直接使用我的程序来计算吧,建行账单日为5号,于是三笔消费截止账单日的日期分别是22,5,2,于是收入一下命令:
ComIntCal.exe 700 0.0005 22 >>Result.txt
ComIntCal.exe 500 0.0005 5 >>Result.txt
ComIntCal.exe 500 0.0005 1 >>Result.txt
下面是输出的计算结果,我们一起来瞻仰一下:
Principal: 500
Interest rate: 0.0005
Times: 2
Times Principal Interest Total Total Interest
1 500.000000 0.250000 500.250000 0.250000
2 500.250000 0.250125 500.500125 0.500125
Principal: 500
Interest rate: 0.0005
Times: 5
Times Principal Interest Total Total Interest
1 500.000000 0.250000 500.250000 0.250000
2 500.250000 0.250125 500.500125 0.500125
3 500.500125 0.250250 500.750375 0.750375
4 500.750375 0.250375 501.000750 1.000750
5 501.000750 0.250500 501.251251 1.251251
Principal: 700
Interest rate: 0.0005
Times: 22
Times Principal Interest Total Total Interest
1 700.000000 0.350000 700.350000 0.350000
2 700.350000 0.350175 700.700175 0.700175
3 700.700175 0.350350 701.050525 1.050525
4 701.050525 0.350525 701.401050 1.401050
5 701.401050 0.350701 701.751751 1.751751
6 701.751751 0.350876 702.102627 2.102627
7 702.102627 0.351051 702.453678 2.453678
8 702.453678 0.351227 702.804905 2.804905
9 702.804905 0.351402 703.156307 3.156307
10 703.156307 0.351578 703.507886 3.507886
11 703.507886 0.351754 703.859639 3.859639
12 703.859639 0.351930 704.211569 4.211569
13 704.211569 0.352106 704.563675 4.563675
14 704.563675 0.352282 704.915957 4.915957
15 704.915957 0.352458 705.268415 5.268415
16 705.268415 0.352634 705.621049 5.621049
17 705.621049 0.352811 705.973860 5.973860
18 705.973860 0.352987 706.326847 6.326847
19 706.326847 0.353163 706.680010 6.680010
20 706.680010 0.353340 707.033350 7.033350
21 707.033350 0.353517 707.386867 7.386867
22 707.386867 0.353693 707.740560 7.740560
上面最后一列计算的是截止当天生成的利息,不难看出,三笔消费的利息总和为:0.500125 + 1.251251 + 7.740560 = 9.491936,四舍五入正好9.5.元,好吧,银行我表示挺无语也挺无奈!讲到这里,您或许还没明白,我就再费点口舌吧:
第一,信用卡的复利是按照天来结算的,一天一算,这是什么概念呢,就是说你取现1000元,从当天起就开始滚雪球了,每天算一次利息,第二天利息计入本金再次生成利息,于是到了第n天结束时,银行给你生成的利息就是a(1+r)^n*r,举个例子:你取1000元,按照万分之5的利率,如果10天后还,那么你要为银行增加5.011265元的收入,如果你不小心忘记了,时间累积到了100天,姑且不要算什么滞纳金吧,仅仅利息你就要付51.257960,如果时间再长点,累积到200天,那么你要付的利息就是105.143298元。如果这样您感觉不到压力,那么我们把时间拉长到20000天,算一下,1000块,20000天后的利息达到21970486.708420。好吧,就这样了,不能再长了,再长就得你的子子孙孙都得来还了!
第二,上面的时间有点蹊跷,我估计不说您也看不出来。拿8月1号的记录为例,到5号,天数是5-1+1 = 5天,这意味着1号当天起就开始计算复利了,Fuck,这是什么狗屁规则吗!这意味着,如果你今天借了500元,就算是借了马上就还,也要收你一次复利的利息,艹!Ok,收就收吧,那我们来看看7月16日到8月5日是个啥情况!照样,按照公式,7月总共31天,31-16+1=16天,从8月1号到5号,5-1+1 = 5天,16+5=21?明明是21天吗,怎么就成了22天了呢?分析一下,正常8月1号到5号要5-1+1,因为我们的起始日期是1号,但是如果起始日期不是当月,那么这下就悲剧了,初步估计,银行是按照起始日期是0号算的,于是就有了5-0+1=6,所以总天数就成了22天了,到此,该说的都说明白了,趁着还没到24:00赶紧还款吧!