【前端js】之小数点保留时的四舍五入问题

项目遇到金额小数点保留位数,极个别的数会差一分,经调查是因为js的问题。

 解决办法:

# 方法一:保留两位小数

function keepTwoDecimal(num) {
 var result = parseFloat(num);
 if (isNaN(result)) {
 alert('传递参数错误,请检查!');
 return false;
 }
 result = Math.round(num * 100) / 100;
 return result;
}


# 方法二:保留任意小数

function round(num, decimal) {
    if (isNaN(num)) {
        return 0;
    }
    const p1 = Math.pow(10, decimal + 1);
    const p2 = Math.pow(10, decimal);
    return Math.round(num * p1 / 10) / p2;
}
 
function toFixed(num, decimal) {
    return round(num, decimal).toFixed(decimal);
}

 

网上找到了一些参考资料:

感谢:laozhang的《js保留两位小数方法总结

感谢:逐梦博客的《js小数点保留时的四舍五入问题的处理

原文地址:https://www.cnblogs.com/Owen-ET/p/13334849.html