2015-04-02 64 views
-3

我写了一个代码来计算得票数。我得到的输出为138405,150000等。使用纯javascript的格式编号

我希望这些数字的格式如下138,405。 如何使用纯JavaScript实现此目的?

+0

请上传你的代码 – atmd 2015-04-02 11:08:36

+0

嘿,我会检查那个帖子。谢谢。 – 2015-04-02 11:12:29

回答

1

您需要决定先约定什么。你想要逗号分隔两个数字,还是三个?

让我们设想它是3,按照惯例。

  • 1000应该成为1, 000
  • 10000应该成为10,000
  • 100000应该成为100,000
  • 1000000应该成为1,000,000

的代码要做到这一点可能是微不足道的:

function formatWithComma(interval, num) { 
    var digits = String(num).split(''), 
     output = []; 

    digits.forEach(function(digit, index) { 
    output.push(digit); 
    if(index % interval === 0) { 
     output.push(','); 
    } 
    }); 

    return digits.reverse().join(''); 
} 

此函数期望以插入逗号的间隔和一个数字来调用,从中可以构建格式化字符串。

  • formatWithComma(3, 12345) === "12,345"
  • formatWithComma(2, 12345) === "1,23,45"

你可能会进一步采取这一个步骤,并且使用JavaScript的partial application mechanism创建预装的第一个参数的格式功能。

var format = formatWithComma.bind(this, 3); 

之后,任何对format的调用都会在每第3位插入一个逗号。

0

我想出了这个功能。这对我来说可以。

function addCommas(nStr) { 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? '.' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + ',' + '$2'); 
    } 
    return x1 + x2; 
} 
1

根据浏览器的目标,你可以使用Number.prototype.toLocaleString()这将在此基础上,你可以指定区域设置格式化您的数字。示例位于下面的链接页面上。

参见https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

例如:

var number = 123456.789; 

console.log(number.toLocaleString('en-US')); 
// → 123,456.789 

如果没有指定的区域设置的用户浏览器区域将被使用。

+0

嘿谢谢你,我曾经使用过它,但它在safari中不支持。 – 2015-04-02 12:06:35