日期:2014-05-18  浏览次数:20486 次

数值计算难题!急!!!
计算实例 
案情:武汉市民某甲,男,2004年12月31日被人伤害致残,经鉴定伤残等级为Ⅱ级。甲与其妻丁生育一儿、一女,女儿A16岁,儿子B14岁;甲的父母健在,均是农民,父C65岁,母D60岁,C、D现由三个子女甲、乙、丙共同赡养。试计算出A、B、C、D的被扶养人生活费各自为多少。(湖北省2004年度统计数据:城镇居民人均消费性支出6399元;农村居民人均年生活消费支出2089元。) 
分析: 
①扶养人数:A——2人;B——2人;C——3人;D——3人。 
②赔偿年限:A——1.2年;B——3.4年;C——15年;D——20年。 
③受害人丧失劳动能力比例系数:伤残Ⅱ级对应为90%。 
④“基数”标准按受害人甲的身份确定为:城镇居民人均消费性支出6399元/年。 
⑤分阶段核算“年赔偿总额累计”是否超过“基数”:前1.2年(1/2+1/2+1/3+1/3)×90%=1.5>1;1.2年后至第3.4年只有B、C、D三个被扶养人,但仍然是(1/2+1/3+1/3)×90%=1.05>1;3.4年后至第15年只有C、D二个被扶养人,(1/3+1/3)×90%=0.6<1;最后5年只有D一个被扶养人, 1/3×90%=0.3<1。 
计算: 
第一阶段: 
A1=6399×[(1/2)/(1/2+1/2+1/3+1/3)]×1.2=2303.6(元) 
B1=6399×[(1/2)/(1/2+1/2+1/3+1/3)]×1.2=2303.6(元) 
C1=6399×[(1/3)/(1/2+1/2+1/3+1/3)]×1.2=1535.8(元) 
D1=6399×[(1/3)/(1/2+1/2+1/3+1/3)]×1.2=1535.8(元) 
第二阶段: 
B2=6399×[(1/2)/(1/2+1/3+1/3)]×(3.4-1.2)=6033.3(元) 
C2=6399×[(1/3)/(1/2+1/3+1/3)]×(3.4-1.2)=4022.2(元) 
D2=6399×[(1/3)/(1/2+1/3+1/3)]×(3.4-1.2)=4022.2(元) 
第三阶段(不需要“调整计算”): 
C3=6399×(1/3)×(15-3.4)×90%=22268.5(元) 
D3=6399×(1/3)×(20-3.4)×90%=31867.0(元) 
每个被扶养人的总数: 
A=A1=2303.6(元) 
B=B1+B2=2303.6+6033.3=8336.9(元) 
C=C1+C2+C3=1535.8+4022.2+22268.5=27826.5(元) 
D=D1+D2+D3=1535.8+4022.2+31867.0=37425.0(元) 

要求实现的目标: 

  上述的“基数”和“比例系数”由另外的数据表读取,二个表的数据由一个编号进行关联(这个已搞定) 

  各个被扶养人的信息先暂存在#pc_bfyrshf(临时数据表)的表中,将每个被扶养人的生活费计算出来后,再由用户选择是否将临时表中的数据及计算结果存入正式的pc_bfyrshf表中。 

  目前,实在感到无法完成的是对各被扶养人费用的计算。 

说简单点,就是要用用 "赔偿年限" "共同扶养人数" “基数”这三个值根据上述的公式来计算各自的扶养费!!

-------------------------------- 

我知道搞这个是很伤脑细胞的,我非常愿意接受大家的有偿服务,希望能帮大忙,先谢了! 


------解决方案--------------------
别要我总结公式咯……本来就头大了

把公式列出来
------解决方案--------------------
倒..
------解决方案--------------------
探讨
头晕

------解决方案--------------------
探讨
引用:
头晕

------解决方案--------------------
SQL code
create table t(序号 int,姓名 varchar(8),性别 varchar(8),赔偿年限 numeric(3,1),与受害者关系 varchar(8),共同扶养人数 int,应得扶养费 numeric(7,2))
insert into t values(1,'A','男',1.2,'儿子',2,null)
insert into t values(2,'B','女',3.4,'女儿',3,null)
insert into t values(3,'B','男', 15,'父亲',2,null)
insert into t values(4,'C','女', 20,'母亲',3,null)
go

select
    (6399*(case when 赔偿年限<=3.4 then 1.0/2 else 1.05'

------解决方案--------------------
15年以后C和D可能已经不在了
------解决方案--------------------
先看看...好像有点乱...
------解决方案--------------------
探讨
这不是考验技术,是考验耐力

------解决方案--------------------
SQL code
--例子数据
declare @cs table(fy int,bl int)
insert @cs select 6399,90
declare @fyr table(xh int,xm varchar(10),pcnx dec(3,1),gtfyr int,fyf dec(10,2))
insert @fyr select 1,'a',1.2,2,0
union all select 2,'b',3.4,2,0
union all select 3,'c',15,3,0
union all select 4,'d',20,3,0

--下面是代码
declare @pcnx dec(3,1),@xs dec(10,6),@fy int,@bl int
select @fy = fy,@bl = bl from @cs
select * into # from @fyr
while exists(select 1 from # where pcnx <>0)
begin
 select @pcnx = min(pcnx),@xs = sum(1.0/gtfyr) from # where pcnx <> 0
 if @xs*@bl <=100 set @xs = @bl/100.0 else set @xs = 1.0/@xs
 update # set pcnx = pcnx - @pcn