项目遇到金额小数点保留位数,极个别的数会差一分,经调查是因为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小数点保留时的四舍五入问题的处理》