js保留多少位小数
四舍五入
/**
* @param {Boolean} ra 整数是否不添加小数
* @param {Number} w 精确保留多少位
*/
function setNum(num, ra = false, w = 2) {
if (isNaN(num)) {
return num
}
num = Number(num)
if (ra&&!(num%1)) {
return num
} else {
num = (Math.round(Number(num) * Math.pow(10, w)) / Math.pow(10, w))
return num.toFixed(w)
}
}
直接舍去
/**
* @param {Boolean} ra 整数是否不添加小数
* @param {Number} w 精确保留多少位
*/
function setNum(num, ra = false, w = 2) {
if (isNaN(num)) {
return num
}
num = Number(num)
if (ra&&!(num%1)) {
return num
} else {
num = Math.floor(num*Math.pow(10,w))/Math.pow(10,w)
return num.toFixed(w)
}
}
向上取整
/**
* @param {Boolean} ra 整数是否不添加小数
* @param {Number} w 精确保留多少位
*/
function setNum(num, ra = false, w = 2) {
if (isNaN(num)) {
return num
}
if (ra&&!(num%1)) {
return num
} else {
num = Number(num)
if (num%1) {
num = num.toString()
let [front, last] = num.split('.')
if (last.length <= w) {
return Number(num).toFixed(w)
} else {
return `${front}.${Number(last.slice(0,w))+1}`
}
} else {
return num.toFixed(w)
}
}
}
如果遇到小数位不够不想用0补直接Number
// 例如保留两位数的四舍五入想要 1.1 输出还是1.1但上面的方法是输出1.10
Number(setNum(1.1))
// 这样就得到了1.1输出1.1