这是我参与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
}
}
}
以上就是小程序日常处理数据时可能遇到的问题,总之需要对数据敬畏,做出更加合理且规范的操作,希望对各位有所帮助。