53

インドの番号付けシステムで表示する次のコードがあります。

 var x=125465778;
 var res= x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");

この出力を取得しています: 125,465,778.

次のような出力が必要です: 12,54,65,778.

この問題を解決するのを手伝ってください。

4

15 に答える 15

86

遅くなりましたが、これが役立つと思います:)

Number.prototype.toLocaleString()を使用できます

構文

numObj.toLocaleString([locales [, options]])

var number = 123456.789;
// India uses thousands/lakh/crore separators
document.getElementById('result').innerHTML = number.toLocaleString('en-IN');
// → 1,23,456.789

document.getElementById('result1').innerHTML = number.toLocaleString('en-IN', {
    maximumFractionDigits: 2,
    style: 'currency',
    currency: 'INR'
});
// → ₹1,23,456.79
<div id="result"></div>
<div id="result1"></div>

于 2015-11-18T12:36:30.717 に答える
67

整数の場合:

    var x=12345678;
    x=x.toString();
    var lastThree = x.substring(x.length-3);
    var otherNumbers = x.substring(0,x.length-3);
    if(otherNumbers != '')
        lastThree = ',' + lastThree;
    var res = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree;
    alert(res);

ライブデモ

フロートの場合:

    var x=12345652457.557;
    x=x.toString();
    var afterPoint = '';
    if(x.indexOf('.') > 0)
       afterPoint = x.substring(x.indexOf('.'),x.length);
    x = Math.floor(x);
    x=x.toString();
    var lastThree = x.substring(x.length-3);
    var otherNumbers = x.substring(0,x.length-3);
    if(otherNumbers != '')
        lastThree = ',' + lastThree;
    var res = otherNumbers.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + lastThree + afterPoint;
    
    alert(res);

ライブデモ

于 2013-04-16T12:55:03.640 に答える
27

やり方は簡単、

1. LocalString() を使用したダイレクト メソッド

(1000.03).toLocaleString()
(1000.03).toLocaleString('en-IN') # number followed by method

2. Intl - 国際化 API の使用

Intlオブジェクトは ECMAScript 国際化 API の名前空間であり、言語に依存した文字列の比較、数値の書式設定、および日付と時刻の書式設定を提供します。

例えば:Intl.NumberFormat('en-IN').format(1000)

3. カスタム機能の使用:

function numberWithCommas(x) {
    return x.toString().split('.')[0].length > 3 ? x.toString().substring(0,x.toString().split('.')[0].length-3).replace(/\B(?=(\d{2})+(?!\d))/g, ",") + "," + x.toString().substring(x.toString().split('.')[0].length-3): x.toString();
}

console.log("0 in indian format", numberWithCommas(0));
console.log("10 in indian format", numberWithCommas(10));
console.log("1000.15 in indian format", numberWithCommas(1000.15));
console.log("15123.32 in indian format", numberWithCommas(15123.32));

入力が 10000.5 の場合、

numberWithCommas(10000.5)

このような出力が得られます。10,000.5

于 2016-04-09T13:38:52.713 に答える
24

整数のみの場合、追加の操作は必要ありません。

これは、末尾から 1 つ以上の 2 桁のパターンを含むすべての数字に一致し、それ自体を + "," に置き換えます。

"125465778".replace(/(\d)(?=(\d\d)+$)/g, "$1,");
-> "1,25,46,57,78"

しかし、最後に 3 が必要なので、入力の末尾に一致する前に余分な「\d」を追加して、これを明示的に述べましょう。

"125465778".replace(/(\d)(?=(\d\d)+\d$)/g, "$1,");
-> "12,54,65,778"
于 2014-10-03T20:02:33.520 に答える
9

以下の関数に数値を指定すると、数字のグループ化のインド形式で書式設定された数値が返されます。

例: 入力: 12345678567545.122343

出力: 1,23,45,67,85,67,545.122343

    function formatNumber(num) {
            input = num;
            var n1, n2;
            num = num + '' || '';
            // works for integer and floating as well
            n1 = num.split('.');
            n2 = n1[1] || null;
            n1 = n1[0].replace(/(\d)(?=(\d\d)+\d$)/g, "$1,");
            num = n2 ? n1 + '.' + n2 : n1;
            console.log("Input:",input)
            console.log("Output:",num)
            return num;
    }
    
    formatNumber(prompt("Enter Number",1234567))
    
    

https://jsfiddle.net/scLtnug8/1/

于 2015-08-31T09:37:15.400 に答える
2

最も簡単な方法は、Globalizeプラグインを使用することです (詳細については、こちらこちらをご覧ください)。

var value = 125465778;
var formattedValue = Globalize.format(value, 'n');
于 2013-04-16T12:57:34.883 に答える
1

この関数は、別の回答に追加するだけで、浮動小数点値を適切に処理できます

function convertNumber(num) {
  var n1, n2;
  num = num + '' || '';
  n1 = num.split('.');
  n2 = n1[1] || null;
  n1 = n1[0].replace(/(\d)(?=(\d\d)+\d$)/g, "$1,");   
  num = n2 ? n1 + '.' + n2 : n1;
  n1 = num.split('.');
  n2 = (n1[1]) || null;
  if (n2 !== null) {
           if (n2.length <= 1) {
                   n2 = n2 + '0';
           } else {
                   n2 = n2.substring(0, 2);
           }
   }
   num = n2 ? n1[0] + '.' + n2 : n1[0];

   return num;
}

この関数はすべての関数をそのまま float に変換します

function formatAndConvertToFloatFormat(num) {
  var n1, n2;
  num = num + '' || '';
  n1 = num.split('.');
  if (n1[1] != null){
    if (n1[1] <= 9) {
       n2 = n1[1]+'0';
    } else {
       n2 = n1[1]
    }
  } else {
     n2 = '00';
  }
  n1 = n1[0].replace(/(\d)(?=(\d\d)+\d$)/g, "$1,");
  return  n1 + '.' + n2;
}
于 2016-09-14T10:01:42.143 に答える