js 四舍五入的坑

1,172 阅读1分钟

在保留n位小数进行四舍五入的情况下,相信大家首选toFixed,但是大家知道吗,这个toFixed是有bug的

例子

(1.115).toFixed(2) // 1.11

那四舍五入应该用什么呢?

// 方法一:Math.round
function round(number, precision) {
    return +(Math.round(+number + 'e' + precision) + `e-${precision}`)
}

// 方法二: 截取
function round(number, presision) {
  const [int, decimals] = String(number).split('.');
  let precisionDecimals = +decimals.slice(0, presision);
  
  if (decimals[presision] > 4) precisionDecimals++;
  
  return parseFloat(int + '.' + precisionDecimals)
}

如果大家有更好的办法:欢迎一起讨论