浅析计算表达式Round四舍五入不正确问题
问题:计算定义公式的值并填写到指定列round( 430* 0.4095, 2),算出来的结果是176.08,而不是想象中的176.09
原因:Math.Round采用的是国际通行的是 Banker 舍入法(银行家舍入),即四舍六入五取偶。银行家舍入是IEEE规定的小数舍入标准之一,也是IEEE目前规定中最优秀的舍入方法,因此所有符合 IEEE 标准的语言都应该实现这种算法。这个算法可以概括为:四舍六入五考虑,五后非零就进一,五后皆零看奇偶,五前为偶应舍去,五前为奇要进一。
举例分析下:
round(176.084,2)//返回176.08(四舍)
round(176.086,2)//返回176.09(六入)
round(176.0851,2)//返回176.09(五后非零就进一)
round(176.085,2)//返回176.08(五后皆零看奇偶,五前为偶应舍去)
round(176.075,2)//返回176.08(五后皆零看奇偶,五前为奇要进一)
推荐解决方法:在四舍五入前先加上0.0000001,即round( 430* 0.4095+0.0000001, 2),满足五后非零就进一的条件即可。
浅析计算表达式Round四舍五入不正确问题
问题:计算定义公式的值并填写到指定列round( 430* 0.4095, 2),算出来的结果是176.08,而不是想象中的176.09原因:Math.Round采用的是...
点击下载文档
本文2024-09-16 17:15:12发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-14520.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章