例如将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,改来改去我都不知道问题出在哪里,还请前辈们解答
2333333
最后那个方法加个
return resultInt;
....