请教一个车价的显示正则匹配:
1500000显示150万;
1505500显示150.55万;
1505550显示150.56万四舍五入百以后的数值
求解~
<scripttype="text/javascript">functionchange(num){num=num/10000;if(typeofnum!='number'){return}varnumStr=num.toString();varindex=numStr.indexOf('.')if(index==-1){returnnumStr+='.00万'}elseif(numStr.length-index==2){returnnumStr+='0万'}elseif(numStr.length-index==3){returnnumStr}else{varreg=/.(\d{3})\d*$/;newNum=numStr.replace(reg,function($0,$1){//tempDec用来判断四舍五入后小数位数vartempDec=Math.round(Number($1.substring(0,2)+'.'+$1.substring(2)));varnewDec;tempDec=tempDec.toString();tempDec===0?newDec='00':(tempDec.length==1?newDec='0'+tempDec:newDec=tempDec)console.log(newDec)return'.'+newDec})}returnnewNum+'万'};console.log(change(1005555))</script>
很早以前写的,你再测试一下。
['1500000','1505500','1505550'].forEach(function(item){console.log(item.replace(/^(\d+)(?=\d{4})(\d{2})(\d+)$/,'$1.$2万'))})四舍五入忽然不想写了。
我觉得函数也可以达到,所以就用函数来写。
写一个简单的:
varx=1500000;functionhandlePrice(num){if(typeofnum!="number")return"wrongnumber";if(num>=100){num=num/10000;num=num.toFixed(2);returnnum+"万";}returnnum;}
PS:
1JavaScript中的浮点数计算可能会有点问题,所以建议重写一个做除法运算的函数.2如果题主一定要正则表达式,那就只能看别人的答案了。
round($money/1000,2)
为什么要正则,先将数字转为单位为万的小数,然后保留小数不就行了?
varn=1505550;
vara=1500000;
varb=1505500;
varm=(Math.round(n/100)/100).toFixed(2);
varc=(Math.round(a/100)/100).toFixed(2);
vard=(Math.round(b/100)/100).toFixed(2);
alert(m);alert(c);alert(d);