问题描述:
将数值处理为 10 的倍数,并支持向上或者向下取整
如将 2345 可以处理为 2300 | 2400 | 3000 | 2000
解决方案:
/**
* 将数字取整为10的倍数
* @param {Number} num 需要取整的值
* @param {Boolean} ceil 是否向上取整
* @param {Number} prec 保留多少位(从左到右)
*/
const formatInt = (num, ceil = true, prec = 2) => {
const len = String(num).length;
if (len < prec) { return };
const mult = Math.pow(10, (len - prec));
return ceil ?
Math.ceil(num / mult) * mult :
Math.floor(num / mult) * mult;
}
// formatInt(2345, true, 2) -> 2400
// formatInt(2345, false, 2) -> 2300
// formatInt(2345, true, 1) -> 3000
// formatInt(2345, false, 1) -> 2000