以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  用ceiling计算个人养老保险不准确  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=153554)

--  作者:foxyuan
--  发布时间:2020/8/14 15:35:00
--  用ceiling计算个人养老保险不准确
请教在计算社保缴纳清单时,个人缴纳部分是见分进角,我用的是
            e.DataRow("个人养老保险") = Math.Ceiling(e.DataRow("本月基数") * e.DataRow("个人养老保险费率")*10)/10
            e.DataRow("个人医疗保险") = Math.Ceiling(e.DataRow("本月基数") * e.DataRow("个人医疗保险费率")*10)/10
            e.DataRow("个人失业保险") = Math.Ceiling(e.DataRow("本月基数") * e.DataRow("个人失业保险费率")*10)/10

当前政策是"个人养老保险费率"是0.08,"个人医疗保险费率"是0.02,"个人失业保险费率"是0.005,现在发现,当"本月基数"是13500.1时,用公式计算都会多0.1元,即13500.1*0.08=1080.008,见分进角应当是1080.0,用上面公式得到的是1080.1,如何设置公式能得到1080.0?

--  作者:foxyuan
--  发布时间:2020/8/14 15:37:00
--  
注意,不能用round2,这里不是四舍五入,是见分进角,只有分位上不是零,就要加一角。
--  作者:有点蓝
--  发布时间:2020/8/14 15:44:00
--  
Output.Show(Math.Floor(13500.1*0.08*100)/100)
--  作者:foxyuan
--  发布时间:2020/8/14 16:10:00
--  
谢谢蓝老师,我马上试试。刚刚又遇到一个奇怪事,为什么
Dim b As Decimal
b = round2(10907.5*0.03,2)
结果显示是327.22,不是327.23?

Dim b As Decimal
b = round2(3747.5*0.03,2)
结果显示就是112.43

--  作者:有点蓝
--  发布时间:2020/8/14 16:27:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=153392&skin=0
--  作者:foxyuan
--  发布时间:2020/8/14 17:01:00
--  
四舍五入用JN_LC老师的自定义函数解决了。谢谢。
--  作者:foxyuan
--  发布时间:2020/8/14 17:02:00
--  
以下是引用有点蓝在2020/8/14 15:44:00的发言:
Output.Show(Math.Floor(13500.1*0.08*100)/100)
蓝老师,这个有点不对,按要求社保只保留一位小数到角,用这个公式就有两位小数,到分了。是不是到分后再用ceiling


--  作者:有点蓝
--  发布时间:2020/8/14 17:05:00
--  
对,再处理一次
--  作者:foxyuan
--  发布时间:2020/8/14 17:25:00
--  
谢谢,这样达到想要的效果了。