背景:最近,开发一个页面,需要实现双边缴费的功能,涉及到运用js进行四舍五入的精确计算,在此记录一下。
一、最初方案
对于js的四舍五入计算方法,JavaScript toFixed() 方法,toFixed() 方法可把 Number 四舍五入为指定小数位数的数字,
语法:NumberObject.toFixed(num)。
但是,后来发现,当遇到1538.87*0.5=769.435时,(769.435).toFixed(2)等于769.43,无法按照正常四舍五入进一位,等于769.44。出现异常情况如下图所示:
所以,此时需要对数字情况进行分类,使得所有情况都可以达到四舍五入的精确计算。
二、对数字进行四舍五入的精确计算
具体方法如下:
var unitPayProportion = data058.item.unitPayProportion;
//将unitPrem四舍五入精确计算
var b = (data.item.totalPremium * unitPayProportion).toString().split('.')[1];
var a = (data.item.totalPremium * unitPayProportion).toString().split('.')[0];
if (b) {
if (b && b.length >= 3) {
b = b.substring(0, 3)
var c = b + '1';
unitPrem = Number(a + '.' + c);
} else {
unitPrem = (data.item.totalPremium * unitPayProportion);
}
} else {
unitPrem = (data.item.totalPremium * unitPayProportion);
}
unitPrem = unitPrem.toFixed(2);
三、实现功能效果图如下:
版权声明:本文为博主原创文章,未经博主允许不得转载 。