我需要编写一个总是向上舍入的函数,但要么舍入到0,1或2个小数位,这取决于函数是否传递给0,1或2。
...实例
舍入到小数点后0位: 13.4178 = 14
舍入到小数点后1位: 13.4178 = 13.5
舍入到小数点后2位: 13.4178 = 13.42
我找到了Math.ceil
,但这只会累加到整数,而to fixed()
会向上或向下舍入,而不仅仅是向上。有没有办法以我上面描述的方式进行整理?
答案 0 :(得分:2)
您可以使用乘法因子乘以10和所需小数的幂,然后将其四舍五入并调整点。
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 :(得分:0)
只需乘以,向上舍入并除以10 ^ dec的因子。
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 ) );

答案 2 :(得分:0)
使用辅助乘法和除法:
function MyCeil(number, digits) {
var factor = Math.pow(10, digits);
return Math.Ceil(number*factor) / factor;
}