美文网首页
小数截取位数的方法

小数截取位数的方法

作者: 印子_cfbb | 来源:发表于2019-11-20 16:55 被阅读0次

    方法一 (不会四舍五入)

    此方法不会进行四舍五入,而是直接截取,不足则补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
    

    相关文章

      网友评论

          本文标题:小数截取位数的方法

          本文链接:https://www.haomeiwen.com/subject/etgoictx.html