退休时每月能领多少钱?——养老金计算程序

来源:互联网 发布:java float 判断相等 编辑:程序博客网 时间:2024/03/29 23:18

转载请保留此信息:http://blog.csdn.net/jmppok/article/details/17303243


1.养老金问题

最近养老金很火:什么?养老金不够用了,要延迟退休!

大家每个月都要缴纳一大笔养老保险金,个人+单位可能有几千块。我不禁会想:现在每个月缴这么多钱,以后等我退休了,一个月能能拿到多少呢?

当然这个问题目前还是个谜。说到底到时候可能还是国家说了算,给你发多少就是多少。


可是最为一个吊丝程序员,对该问题却十分关注。下面试图通过一个小程序来模拟算一下,一个中国人一生需要缴纳多少养老金,以及退休后,每个月能领到多少钱?


2.几个重要的设定

1)每个人缴纳数是随工资增长的,但是也有一个高限(上一年本市平均工资的3倍的28%),当然平均工资也是会随年增长的。

     设定一:我以GDP的增长速度来代替平均工资的增长速度,并且设定为7%。

2)大家都知道养老金是退休了以后才能领取的,没退休之前,钱是存在银行的,而这时候是要算利息的。

     设定二:取目前5年期的定存利率作为计算利率, 目前为4.75%


3.能领多少钱?

1)假设25岁工作,工作时工资为8000元,每个月个人+单位缴养老金1920元。60岁退休,90岁Over,领30年养老金。则情况如下:


到时每月领取46358元。

2)如果延迟至65岁退休,则情况如下:


到时每月领取79972元。(多缴了5年,少领了5年)

3)比如我是工作4年,今年30,现在缴4200左右,估计到时候65退休。情况如下:

到时每月领108936元。好多阿....


4.先不要太开心,退休时,30年过去了,那时候的物价...

假设GDP增速7%,CPI增速3%


30年后,10000元增长17倍,退休的时候每月拿10W元,才相当于现在的6000元。


5.实现代码

Python2.7

1)养老金计算代码,c1.py

#!/usr/bin/python# -*- coding: utf-8 -*-import sys#月缴纳金额(个人+单位)Money_now = 0#退休后月领取金额Money_retire = 0#参加工作年龄,预定义为22Age_work = 25#现在年龄(输入)Age_now = 0#退休年龄,预定义为60Age_retire = 65#死亡年龄,预定义为90Age_die = 90#银行利息,用于计算养老金利息Bank_rate=0.0475#GDP增长,用于计算每月养老金的增加金额GDP_rate=0.07#计算分为两步:#1.计算总缴纳,包括以前缴的和以后缴的,每年计息;#2.计算月领取数,领取时余额每年计息;def calc(age,money):Age_now=int(age)Money_now=int(money)Y_before= Age_now-Age_workY_total = Age_retire - Age_workM_first = Money_now*(1-GDP_rate)**Y_beforeR_gdp = 1+GDP_rate;R_bank = 1+Bank_rate;#计算总缴纳额#  Y_total-1#SUM=∑(M_first*12*(R_gdp)**k)*(R_bank)**(Y_total-k)      #  k=0#即#  Y_total-1#SUM=∑(12*M_first*(R_bank)**Y_total)*(R_gdp/R_bank)**(k)      #  k=0#使用等比数列求和 Sn=a1(1-q^n)/(1-q)q=R_gdp/R_bankSUM=12*M_first*((R_bank)**(Y_total))*(1-q**Y_total)/(1-q)print Age_work,"参加工作,",Age_retire,"退休","退休时有养老金",SUM#下面计算领取Y_draw=Age_die-Age_retire# 假设刚好领完,每年计息#  Y_draw-1#  ∑(SUM-Money_retire*12*k)*(R_bank)**(Y_draw-k)=12*Money_retire*Y_draw     #  k=0#Y=12Money_retire#M=(R^(n+1)-(n+1)R+n)/(R^n*(R-1)^2)        #Y=(S*(R^N-1))/((R-1)*(R^n*M+N))M=(R_bank**(Y_draw+1)-(Y_draw+1)*R_bank+Y_draw)/(R_bank**Y_draw * (R_bank-1)**2)Y=(SUM*(R_bank**Y_draw-1))/((R_bank-1)*(R_bank**Y_draw*M+Y_draw))Money_retire = Y/12print Age_die,"死亡,领取",Y_draw,"年,每月",Money_retireif __name__=='__main__':if(len(sys.argv)<3):print "Usage: c.py age money"else:calc(sys.argv[1],sys.argv[2])

代码分析:主要是两个数学计算公式。

a.缴费计算 

#  Y_total-1#SUM=∑(M_first*12*(R_gdp)**k)*(R_bank)**(Y_total-k) #  k=0
b.领取计算

#  Y_draw-1#  ∑(SUM-Money_retire*12*k)*(R_bank)**(Y_draw-k)=12*Money_retire*Y_draw #  k=0

2)物价上涨计算代码

#!/usr/bin/python# -*- coding: utf-8 -*-GDP_rate=0.07CPI_rate=0.03i=5while(i<65):print "10000, ",i," Years late : ",10000*(1+GDP_rate+CPI_rate)**ii+=5


欢迎大家批评指正!


6.总结

少年们,考公务员吧!



1 0
原创粉丝点击