求助关于收支
本帖最后由 yyr513 于 2013-12-21 19:39:25 编辑
假设
7月出售了价格1250元的产品 税收是1.05
所以价格为 1250*1.05=1312.5 四舍五入 为1313
收入1313元
8月出售了价格2250元的产品 税收是1.05
所以价格为 2250*1.05=2362.5 四舍五入 为2363
收入2363元
9月出售了价格2250元的产品 税收是1.05
所以价格为 2250*1.05=2362.5 四舍五入 为2363
收入2363元
而当我要查询的时候10月以前的收支平衡的时候
要等于 税后出售的金额的总和-收入的金额总和
即 税后出售的金额的总和 为 1312.5+2362.5+2632.5 =6037.5 四舍五入 6038
收入的金额总和为1313+2363+2363 =6039
这时 收支出现了-1的误差
这样算起来
就会出现 单个月查询时,收支平衡。但是多个月查询的时候就会出现误差。
求助怎样解决这个问题
------解决方案--------------------仔细看了,因为:
税后出售的金额的总和 为 1312.5+2362.5+2632.5 =6037.5 那么这个是准确的数,这个时候四舍五入,就是6038,也就是相当于加上了0.5。
而上面:
所以价格为 1250*1.05=1312.5 四舍五入 为1313
所以价格为 2250*1.05=2362.5 四舍五入 为2363
所以价格为 2250*1.05=2362.5 四舍五入 为2363
那么就多了1.5了,上面是多了0.5,所以正好是相差1
------解决方案--------------------在计算税后出售金额总和时,应先四舍五入后再求和. 而不是先求和在四舍五入.
create table yyr
(月份 int,出售产品价格 int,税收 decimal(6,2),税后出售金额 decimal(8,2),收入 int)
insert into yyr(月份,出售产品价格,税收)
select 7,1250,1.05 union all
select 8,2250,1.05 union all
select 9,2250,1.05
-- 计算[税后出售金额],[收入].
update yyr
set 税后出售金额=出售产品价格*税收,
收入=round(出售产品价格*税收,0)
select * from yyr
/*
月份 出售产品价格 税收 税后出售金额 收入
----------- ----------- -------- ---------------- -----------
7 1250 1.05 1312.50 1313
8 2250 1.05 2362.50 2363
9 2250 1.05 2362.50 2363
(3 row(s) affected)
*/
-- 计算收支平衡
create proc sp_szph
(@beginmonth int, -- 起始月份
@endmonth int -- 结束月份
)
as
begin
set nocount