js保留两位(或多位)的几种情况

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
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值