关于正则显示金额的问题

请教一个车价的显示正则匹配:

1500000 显示150万;
1505500 显示150.55万;
1505550 显示150.56万四舍五入百以后的数值


求解~

阅读 3.8k
6 个回答
        <script type="text/javascript">
            function change(num) {
                num = num / 10000;
                if(typeof num != 'number') {
                    return
                }
                var numStr = num.toString();
                var index = numStr.indexOf('.')
                if(index == -1) {
                    return numStr += '.00万'
                } else if(numStr.length - index == 2) {
                    return numStr += '0万'
                } else if(numStr.length - index == 3) {
                    return numStr
                } else {
                    var reg = /.(\d{3})\d*$/;
                    newNum = numStr.replace(reg, function($0, $1) {
                        //tempDec 用来判断四舍五入后小数位数
                        var tempDec = Math.round(Number($1.substring(0, 2) + '.' + $1.substring(2)));
                        var newDec;
                        tempDec = tempDec.toString();
                        tempDec === 0 ? newDec = '00' : (tempDec.length == 1 ? newDec = '0' + tempDec : newDec = tempDec)
                        console.log(newDec)
                        return '.' + newDec
                    })
                }
                return newNum + '万'
            };
            console.log(change(1005555))
        </script>

很早以前写的,你再测试一下。

['1500000','1505500','1505550'].forEach(function(item){
     console.log(item.replace(/^(\d+)(?=\d{4})(\d{2})(\d+)$/,'$1.$2万'))
})
四舍五入忽然不想写了。

我觉得函数也可以达到,所以就用函数来写。
写一个简单的:

var x = 1500000;
function handlePrice(num) {
    if(typeof num != "number") return "wrong number";
    if(num >= 100) {
        num = num/10000;
        num = num.toFixed(2);
        return num + "万";
    }
    return num;
}

PS:

1 JavaScript中的浮点数计算可能会有点问题,所以建议重写一个做除法运算的函数.
2 如果题主一定要正则表达式,那就只能看别人的答案了。

round($money/1000,2)

为什么要正则,先将数字转为单位为万的小数,然后保留小数不就行了?

var n = 1505550;
var a = 1500000;
var b = 1505500;
var m =(Math.round(n/100)/100).toFixed(2);
var c =(Math.round(a/100)/100).toFixed(2);
var d =(Math.round(b/100)/100).toFixed(2);
alert(m);alert(c);alert(d);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题