微信小程序坑点挖掘(三)常见数值问题解决方案

304 阅读1分钟

这是我参与2022首次更文挑战的第10天,活动详情查看:2022首次更文挑战

一、数值大小判断异常

举个例子,判断购买商品的金额大小是否达到优惠券的最低使用价格:

if (e.currentTarget.dataset.satisfy_price > that.data.sum) {
      wx.showToast({
        title: '未达到最低使用价格',
        icon:"none",
        duration:1000
      })
    }

上述代码针对1000.00这种金额及以上的情况就会被判定比最低使用价格小(200元左右),判断出现异常,这个时候如果加上parseInt()方法把它们都转化成数字再进行数值大小判断就比较保险合理。

 if (e.currentTarget.dataset.satisfy_price > parseInt(that.data.sum)) {//必须加that.data.sum否则会被看成比200小,这就很尴尬了
      wx.showToast({
        title: '未达到最低使用价格',
        icon:"none",
        duration:1000
      })
    }

二、数字过大导致显示异常

之前学小程序的时候,遇见过非常大的数字,几百几千万甚至上亿的那种,这个对我来说没有太大的必要,同时也不需要太精确的数字,所以这里就介绍一个简单可用的方法把数字缩写一下。

changeNumber(num,point){//num是传进来的具体数字,point是我们要保留的小数点个数
      let number=num.toString().split('.')[0]//第一步通过转换成字符串,利用.分割截取.前面的数字
      if(number.length<6){//对于万以下的数字我们不处理
        return number//直接返回
      }else if(number.length>=6&&number.length<=8){//第二步判断!小于6直接抬走,6-8即十百千万留下
        let demical=number.substring(number.length-4,number.length-4+point)//这一步呢是拿到需要的小数
        let realnumber=parseFloat(parseInt(number/10000)+'.'+demical)+'万' /*这一步呢是将原本的数除于10000再将之取int拿到小数点前的数,直接加万也行,加上拿到的小数也行!*/ 
        return realnumber
      }else if(number.length>8){//这个是处理上亿的数了
        let demical=number.substring(number.length-8,number.length-8+point)
        let realnumber=parseFloat(parseInt(number/100000000)+'.'+demical)+'亿'
        return realnumber
      }
    }
  }

以上就是小程序日常处理数据时可能遇到的问题,总之需要对数据敬畏,做出更加合理且规范的操作,希望对各位有所帮助。