以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 用ceiling计算个人养老保险不准确 (http://foxtable.net/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 -- 谢谢,这样达到想要的效果了。 |