方法一 (不会四舍五入)
此方法不会进行四舍五入,而是直接截取,不足则补0,默认保留2位
val 为需要格式化的数值
dotIdx 为截取的位数
如:
const getFloatCut = (val, dotIdx=2) => {
var re = new RegExp("([0-9]+\\.[0-9]{" + dotIdx + "})[0-9]*")
var aNew = val.toString().replace(re, "$1");
return parseFloat(aNew).toFixed(dotIdx)
}
getFloatCut(3,2) //3.00
getFloatCut(3.999,2) //3.99
方法二(会四舍五入)
此方法会进行四舍五入,不足则补0,默认保留2位
val 为需要格式化的数值
dotIdx 为截取的位数
如:
const getFloatCut = (val, dotIdx=2) => {
var aNew = Math.round(val * Math.pow(10, dotIdx))
aNew = aNew / Math.pow(10, dotIdx)
return parseFloat(aNew).toFixed(dotIdx)
}
getFloatCut(3,2) //3.00
getFloatCut(3.999,2) //4.00
合并上述方法:
const getFloatCut = (val, dotIdx = 2, cutFlag = false) => {
if (cutFlag) {
// 不要四舍五入,直接截取
// getFloatCut(3.99999,2,true) => 3.99
var re = new RegExp("([0-9]+\\.[0-9]{" + dotIdx + "})[0-9]*")
var aNew = val.toString().replace(re, "$1");
return parseFloat(aNew).toFixed(dotIdx)
} else {
// 要四舍五入
// getFloatCut(3.99999,2) => 4.00
var aNew = Math.round(val * Math.pow(10, dotIdx))
aNew = aNew / Math.pow(10, dotIdx)
return parseFloat(aNew).toFixed(dotIdx)
}
}
getFloatCut(3.99999,2,true)//3.99
getFloatCut(3.99999,2)//4.00