解决前端四舍五入bug和0.1+0.2不等于0.3问题

101 阅读1分钟

解决前端toFixed四舍五入的不准确性

/**
 * 小数四舍五入 round(1.005, 2) = 1.01
 * @param {*} number
 * @param {*} precision
 * @returns
 */
function round(number, precision) {
  return Math.round(+number + 'e' + precision) / Math.pow(10, precision)
}

解决前端计算数字精度丢失问题

/**
 * 数字精度丢失 strip(0.1+0.2) = 0.3
 * @param {*} num
 * @param {*} precision
 * @returns
 */
function strip(num, precision = 12) {
  return +parseFloat(num.toPrecision(precision))
}