0

数値 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('');
        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.000未定義0"

私は何を間違えましたか?

4

5 に答える 5

3

文字列の長さにインデックス カウンターを割り当てています。

var l = value.length;
...
for(i = l;i >= 0;i--){

また、ダウン カウントは length-index から始まりますが、これは配列がゼロベースであるため存在しません。代わりに事前に減算します。

for(i = l;i >= 0;--i){
于 2012-10-04T17:17:49.093 に答える
0
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;
}

いくつかのこと:

  1. 間違ったインデックスでカウントダウンしていました (l-1 ではなく、l から開始していました)
  2. 1000 未満の値を処理していませんでした
  3. カウンター変数を使用する必要はありませんu。モジュロ演算を使用して 3 を追跡できます。
于 2012-10-04T17:26:14.267 に答える
0

私はいくつかの部分を切り取った:

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;
}
于 2012-10-04T17:29:30.400 に答える
0

編集:これを無視してください、私は質問に十分な注意を払っていませんでした.

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);
} 

また、投稿でコードをフォーマットすることは良いことです。すべてを 4 つのスペースでインデントします。

于 2012-10-04T17:25:28.797 に答える
0

次のようにできます。

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

このJsBinを参照してください

于 2012-10-04T17:41:00.260 に答える