function toDecimal2(strData){
//对不合法的字符串进行校验
if(!strData){
return ""
}
if(!parseFloat(strData)){
return ""
}
let ret = parseFloat(strData)
ret = Math.round(ret*100)/100 // 四舍五入,保留2位小数, 若是1000,则是保留3位小数
//对传过来的若是整型数字字符串的处理
if(ret.toString().indexOf(".") < 0){
ret = ret.toFixed(2)
}
return ret.toString()
}
console.log("2.561=", toDecimal2("2.561")) //2.561= 2.56
console.log("2.567=", toDecimal2("2.567")) //2.567= 2.57
console.log("2.0=", toDecimal2("2.0")) //2.0= 2.00
console.log("2.00=", toDecimal2("2.00")) //2.00= 2.00
console.log("2=", toDecimal2("2")) // 2= 2.00
console.log("100=", toDecimal2("100")) //100= 100.00
console.log("=", toDecimal2("")) //=
console.log("sdf=", toDecimal2("sdf")) //sdf=
总结: 这里主要使用了两个技术点
- 利用 Math.round(ret*100)/100 对符合小数条件的进行保留一步到位
- 利用 float.toFixed(2) 对不符合小数条件的, 如"2", 先parseFloat, 把它转化成了float, 但显示时,缺省了小数点后面的0, 再利用toFixed(2),明确显示出来 2.00