javascript - 把一个浮点数的整数部分转成每三位加上一个逗号,我最后想用下函数调用函数本身的方法,但是出错了。
迷茫
迷茫 2017-04-11 10:21:56
0
1
171

例如将3456000.09=>3,456,000.09 这样子。就这个小练习小白我已经做了一晚上了,由于目前还没有接触到其他javascript的知识,例如正则表达式什么的,所以没考虑别的方法。现在想出来两种方法,分别是用小学算术和循环,(刚刚查了下Mozilla,num.toLocalString()方法就可以直接将数字转换成整数部分每三位带一个“,”,已哭晕/(ㄒoㄒ)/~~)。但是考虑到能用循环的地方都能用递归,所以我想用下递归,也就是函数调用函数本身的方法,不知道我这个理解有没有错误,但是使用这个方法就卡壳了,先不考虑小数部分。
先贴上我自己实现的两种方法:
循环的方法请输入代码

        function change(num) {
            var nInt = parseInt(num);
            var str = nInt.toString();
            var resultInt = "";
            while (str.length > 3) {
                var newstr = str.substr((str.length - 3), 3);
                newstr = "," + newstr;
                resultInt = newstr + resultInt;
                str = str.substr(0, str.length - 3);
            }

            if (str.length <= 3) {
                resultInt = str + resultInt;
            }

            var a = num.toString();
            var b = a.indexOf(".")
            var resultfloat = a.substr(b, (a.length - 1));
            var result = resultInt + resultfloat;
            return result;
        }
            window.onload=function(){alert(change(10000000000.123789))};

算术方法请输入代码

        function change(num) {
            var resultInt = "";
            while (num >= 1000){
                var tmp = num % 1000;
                num = num / 1000;
                var num = parseInt(num);
                if(tmp < 10) {
                    resultInt = tmp + "00" + resultInt;
                } else if(tmp < 100){
                    resultInt = tmp + "0" + resultInt;
                }else{
                    resultInt = tmp + resultInt;
                }
                if(num > 0){
                    resultInt = "," + resultInt;
                }
            }
            if(num > 0){
                resultInt = num + resultInt;
            }
            return resultInt;
        }

递归的方法请输入代码

        function change(num) {
            var nInt = parseInt(num);
            var str = nInt.toString();
            var resultInt = "";
            function outcome(s) {
                if (s.length > 3) {
                    var newstr = s.substr((s.length - 3), 3);
                    newstr = "," + newstr;
                    resultInt = newstr + resultInt;
                    s = s.substr(0, s.length - 3);
                    outcome(s);
        }
                   else{
            resultInt = s + resultInt;
            return resultInt;
        }

        }
            outcome(str);
        }

最后这个方法总是显示undefined,改来改去我都不知道问题出在哪里,还请前辈们解答

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

모든 응답(1)
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!