Javascript总是向上舍入到X小数位

Javascript always round up to X decimal places

本问题已经有最佳答案,请猛点这里访问。

我需要编写一个始终向上取整的函数,但根据传递给函数的是0、1还是2,可以向上取整到小数点后0、1或2。

例子…

四舍五入到小数点后0位:13.4178=14

四舍五入到小数点后1位:13.4178=13.5

四舍五入到小数点后两位:13.4178=13.42

我找到了Math.ceil,但这只会向上取整,to fixed()会向上或向下取整,而不仅仅是向上取整。有没有一种方法可以像我上面描述的那样总结?


你可以用一个系数乘以十和所需的十进制数的幂,然后把它四舍五入并调整圆点。

1
2
3
4
5
6
7
function up(v, n) {
    return Math.ceil(v * Math.pow(10, n)) / Math.pow(10, n);
}

console.log(up(13.4178, 0));
console.log(up(13.4178, 1));
console.log(up(13.4178, 2));


使用辅助乘法和除法:

1
2
3
4
function MyCeil(number, digits) {
  var factor = Math.pow(10, digits);
  return Math.Ceil(number*factor) / factor;
}


只需乘以,四舍五入并除以10^dec的系数。

1
2
3
4
5
6
7
8
9
10
11
function roundUp( num, dec ) {
  // raise by dec, default to 0 decimals at the and.
  const d = Math.pow( 10, ( dec || 0 ) );
  // Multiply, round up and divide back so your decimals remain the same
  return Math.ceil( num * d ) / d;
}

console.log( roundUp( 1.2345 ) );
console.log( roundUp( 1.2345, 1 ) );
console.log( roundUp( 1.2345, 2 ) );
console.log( roundUp( 1.2345, 3 ) );