纯收集JS有用的脚本函数。
js的浮点数处理是值得关注的问题。不久前写了个页面浮点数校验的功能。页面中浮点数是以#,##0.00的格式显示的,在js中肯定不能用+直接做了。在js中对浮点数的处理如下:
notBlend = notBlend.replace(/,/g,""); //js的replace是支持正则表达式的,/,/代表要替换的字符,g代表全部替换 notBlend = parseFloat(notBlend);//去掉逗号后转换为float。js是没有parseDouble的 notBlend = formatnumber(notBlend,2);
//浮点数直接截位函数 function formatnumber(value,num){ var tmp,idx,len,i tmp = value.toString(); idx = tmp.indexOf('.'); len = tmp.length; if (num==0){ if (idx!=-1) tmp = tmp.substring(0,idx); } else{ if (idx==-1){ tmp = tmp + "."; for (i=1;i<=num;i++) tmp = tmp + "0"; } else { tmp = tmp.substring(0,idx+num+1); for (i=len;i<=idx+num;i++) tmp = tmp + "0"; } } return tmp } //截位带四舍五入 function adv_format(value,num) //四舍五入 { var a_str = formatnumber(value,num); var a_int = parseFloat(a_str); if (value.toString().length>a_str.length){ var b_str = value.toString().substring(a_str.length,a_str.length+1) var b_int = parseFloat(b_str); if (b_int<5){ return a_str }else{ var bonus_str,bonus_int; if (num==0){ bonus_int = 1; }else{ bonus_str = "0." for (var i=1; i<num; i++) bonus_str+="0"; bonus_str+="1"; bonus_int = parseFloat(bonus_str); } a_str = formatnumber(a_int + bonus_int, num) } } return a_str }