显示在使用Javascript印度格式的数(Displaying a number in India

2019-08-31 07:43发布

我有下面的代码在印度数字显示。

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

正在此输出: 125,465,778

我需要的输出是这样的: 12,54,65,778

请帮我理清这个问题。

Answer 1:

对于整数:

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

现场演示

对于float:

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

现场演示



Answer 2:

我来晚了,但我想这将帮助:)

你可以使用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' }); // → Rs.123,456.79 
 <div id="result"></div> <div id="result1"></div> 



Answer 3:

对于整数只有无需额外的操作需要。

这将每个数字从端部匹配,后具有1个以上两位数图案,并用本身+替换它“”:

"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"


Answer 4:

鉴于一些下面的功能,它返回数字分组的印度格式格式的数字。

例如:输入:12345678567545.122343

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

function formatNumber(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;
        return num;
}

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



Answer 5:

这应该工作。

var number=12345678;
alert(number.toLocaleString());

您也可以通过defualt将采取国际公约传递参数的函数内部在这里。 如果你想用印度约定则u应该写这样的。

alert(number.toLocaleString("hi-IN"));

但是这个代码将在Chrome,Mozzilla和IE才能正常工作。 它不会在Safari上运行。



Answer 6:

只需使用https://osrec.github.io/currencyFormatter.js/

然后,所有你需要的是:

OSREC.CurrencyFormatter.format(2534234, { currency: 'INR' }); 
// Returns ₹ 25,34,234.00


Answer 7:

我在比赛中有点晚了。 但这里是做到这一点的含蓄的方式。

var number = 3493423.34;

console.log(new Intl.NumberFormat('en-IN', { style: "currency", currency: "INR" }).format(number));

如果你不想货币符号,使用这样的

console.log(new Intl.NumberFormat('en-IN').format(number));


Answer 8:

最简单的方法就是使用Globalize的插件(阅读更多关于它在这里和这里 ):

var value = 125465778;
var formattedValue = Globalize.format(value, 'n');


Answer 9:

试着像下面,我发现了一些格式的插件在这里: Java脚本的数字格式化

通过使用我做了下面的代码,它工作正常,试试这个,它会帮助你..

SCRIPT:

<script src="format.20110630-1100.min.js" type="text/javascript"></script>

<script>
  var FullData = format( "#,##0.####", 125465778)
  var n=FullData.split(",");
  var part1 ="";
    for(i=0;i<n.length-1;i++)
    part1 +=n[i];
  var part2 = n[n.length-1]
  alert(format( "#0,#0.####", part1) + "," + part2);
</script>

输入:

1) 125465778
2) 1234567.89

输出:

1) 12,54,65,778
2) 12,34,567.89


Answer 10:

该功能可以处理浮点值,正常只是除了另一个答案

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

这个功能将转换所有功能的浮动,因为它是

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


Answer 11:

下面是函数,

function numberWithCommas(x) {
    return 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);
}

如果你的输入是10000.5,

numberWithCommas(10000.5)

你会得到如下所示的结果, 10,000.5



Answer 12:

基于Nidhinkumar的问题我已经检查了上述回答和同时处理负数的输出不会为如正确:-300它应显示为-300,但上面的答案将显示为- ,300这是不好的,所以我试图与下面的代码,即使在负的情况下工作。

var negative = input < 0;
    var str = negative ? String(-input) : String(input);
    var arr = [];
    var i = str.indexOf('.');
    if (i === -1) {
      i = str.length;
    } else {
      for (var j = str.length - 1; j > i; j--) {
        arr.push(str[j]);
      }
      arr.push('.');
    }
    i--;
    for (var n = 0; i >= 0; i--, n++) {
      if (n > 2 && (n % 2 === 1)) {
        arr.push(',');
      }
      arr.push(str[i]);
    }
    if (negative) {
      arr.push('-');
    }
    return arr.reverse().join('');


文章来源: Displaying a number in Indian format using Javascript