Javascript中的formatMoney函数不';行不通
我需要一个函数,可以将数字10000转换为这个数字:10.000 因此,我尝试了以下方法:Javascript中的formatMoney函数不';行不通,javascript,numbers,format,Javascript,Numbers,Format,我需要一个函数,可以将数字10000转换为这个数字:10.000 因此,我尝试了以下方法: function formatMoney(money){ var value = money.toString(); var l = value.length; var new_value = 0; new_value = new_value.toString(); if(l > 3){ var moneyarray = value.split
function formatMoney(money){
var value = money.toString();
var l = value.length;
var new_value = 0;
new_value = new_value.toString();
if(l > 3){
var moneyarray = value.split('');
var u = 0;
for(i = l;i >= 0;i--){
if(u > 3){
u = 0;
new_value = "."+new_value;
}
new_value = moneyarray[i]+new_value;
u++;
}
}
return new_value;
}
然后称之为:
formatMoney("10000");
但结果是
10.000undefined0“
我做错了什么?您将索引计数器分配给字符串的长度
var l = value.length;
...
for(i = l;i >= 0;i--){
倒计时从长度索引开始,因为数组是基于零的,所以不存在长度索引
for(i = l;i >= 0;--i){
将索引计数器指定给字符串的长度
var l = value.length;
...
for(i = l;i >= 0;i--){
倒计时从长度索引开始,因为数组是基于零的,所以不存在长度索引
for(i = l;i >= 0;--i){
编辑:忽略这一点,我没有对这个问题给予足够的关注 如果你想做的只是取4位数或更大的数字,然后在右边的3位数中加一个点,你可以试一试:
function formatMoney(money) {
var moneyString = money.toString();
var moneyLength = moneyString.length;
if(moneyLength < 4) {
return 0;
}
var dotIndex = moneyLength - 3;
return moneyString.substr(0, dotIndex) + "." + moneyString.substr(dotIndex);
}
函数格式货币(money){
var moneyString=money.toString();
var moneyLength=moneyString.length;
如果(货币长度<4){
返回0;
}
var dotIndex=货币长度-3;
返回moneyString.substr(0,dotIndex)+“+”+moneyString.substr(dotIndex);
}
此外,在文章中格式化代码也是一件好事。将代码缩进四个空格。编辑:忽略这一点,我没有对这个问题给予足够的重视
function formatMoney(money){
var value = money.toString();
var l = value.length;
var new_value = 0;
new_value = new_value.toString();
if(l > 3){
var moneyarray = value.split('');
for(var i = l-1;i >= 0;i--){
if((l-i)%3 === 0){
new_value = "."+new_value;
}
new_value = moneyarray[i]+new_value;
}
} else {
new_value = value;
}
return new_value;
}
如果你想做的只是取4位数或更大的数字,然后在右边的3位数中加一个点,你可以试一试:
function formatMoney(money) {
var moneyString = money.toString();
var moneyLength = moneyString.length;
if(moneyLength < 4) {
return 0;
}
var dotIndex = moneyLength - 3;
return moneyString.substr(0, dotIndex) + "." + moneyString.substr(dotIndex);
}
函数格式货币(money){
var moneyString=money.toString();
var moneyLength=moneyString.length;
如果(货币长度<4){
返回0;
}
var dotIndex=货币长度-3;
返回moneyString.substr(0,dotIndex)+“+”+moneyString.substr(dotIndex);
}
此外,在文章中格式化代码也是一件好事。将代码缩进四个空格
function formatMoney(money){
var value = money.toString();
var l = value.length;
var new_value = 0;
new_value = new_value.toString();
if(l > 3){
var moneyarray = value.split('');
for(var i = l-1;i >= 0;i--){
if((l-i)%3 === 0){
new_value = "."+new_value;
}
new_value = moneyarray[i]+new_value;
}
} else {
new_value = value;
}
return new_value;
}
有几件事:
u
,只需使用模数学来跟踪三个u
,只需使用模数学来跟踪三个function formatMoney(money) {
var value = money.toString();
var l = value.length;
var new_value = "";
if (l > 3) {
var u = 0;
for (i = l-1;i >= 0;i--) {
if (u == 3) {
u = 0;
new_value = "." + new_value;
}
new_value = value[i]+new_value;
u++;
}
}
return new_value;
}
我剪掉了一些部分:
function formatMoney(money) {
var value = money.toString();
var l = value.length;
var new_value = "";
if (l > 3) {
var u = 0;
for (i = l-1;i >= 0;i--) {
if (u == 3) {
u = 0;
new_value = "." + new_value;
}
new_value = value[i]+new_value;
u++;
}
}
return new_value;
}
你可以这样做:
function money(m) {
m = m.toString().split('');
for (var i = m.length - 3; i > 0; i -= 3)
m.splice(i,0,".");
return m.join('');
}
console.log(money(1000000)); // "1.000.000
看到这个你可以这样做:
function money(m) {
m = m.toString().split('');
for (var i = m.length - 3; i > 0; i -= 3)
m.splice(i,0,".");
return m.join('');
}
console.log(money(1000000)); // "1.000.000
看这个OP似乎不是美国人,所以他们转换。而且,在数字上。例如100万是1.000.000,00.Ooh,这是有意义的。感谢澄清。OP似乎不是美国人,所以他们转换。在数字上。例如100万是1.000.000,00.Ooh,这是有意义的。感谢澄清。