js保留两位(或多位)小数的几种情况
1.保留2位(或n位),保留小数的最后一位需要四舍五入
var num1 =2.446;
var num2 =2.444;
var num3 =2.4;
num1 = num1.toFixed(2);
num2 = num2.toFixed(2);
num3 = num3.toFixed(2);
console.log(num1,typeof num1); //2.45 string
console.log(num2,typeof num2); //2.44 string
console.log(num3,typeof num3); //2.40 string
//封装一下
function keepNumDecimal(num,digits) {
digits = digits === undefined ? 2 : digits
return num.toFixed(digits)
}
注意: 会自动四舍五入,保留2位(或n位)小数
2.保留2位(或n位),保留小数的最后一位不需要四舍五入
function keepNumDecimalNoDounded(num, digits) {
digits = digits === undefined ? 2 : digits
num = num.toString()
let index = num.indexOf('.')
if (index !== -1) {
num = num.substring(0, digits + index + 1)
} else {
num = num.substring(0)
}
return parseFloat(num).toFixed(digits)
}
console.log(keepNumDecimalNoDounded(123.123,2)) //123.12
console.log(keepNumDecimalNoDounded(123.127,2)) //123.12
3.保留2位(或n位),保留小数的最后一位向上取整(eg:12.121 =>12.13;12.12=>12.12 )
function keepNumDecimalTakeUpInteger(num, digits) {
digits = digits === undefined ? 2 : digits
num = num.toString()
let index = num.indexOf('.')
let pow = 0
if (index !== -1) {
let toFixedDecimal = num.substring(digits + index + 1, digits + index + 2)
num = num.substring(0, digits + index + 1)
if(toFixedDecimal != ""){
pow = digits
}
} else {
num = num.substring(0)
}
// 多加一个 parseFloat 会把末尾的0去掉(第一个输出:34.1)
// return parseFloat((parseFloat(num) + (pow === 0 ? 0 : Math.pow(0.1,pow))).toFixed(digits))
return (parseFloat(num) + (pow === 0 ? 0 : Math.pow(0.1,pow))).toFixed(digits)
}
console.log(keepNumDecimalTakeUpInteger(34.1,2)) //34.10
console.log(keepNumDecimalTakeUpInteger(34.123,2)) //34.13
console.log(keepNumDecimalTakeUpInteger(34.123456,4)) //34.1235