小數(shù)截取位數(shù)的方法

方法一 (不會四舍五入)

此方法不會進(jìn)行四舍五入,而是直接截取,不足則補0,默認(rèn)保留2位
val 為需要格式化的數(shù)值
dotIdx 為截取的位數(shù)
如:

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

方法二(會四舍五入)

此方法會進(jìn)行四舍五入,不足則補0,默認(rèn)保留2位
val 為需要格式化的數(shù)值
dotIdx 為截取的位數(shù)
如:

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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容