关于javascript:如何格式化干净的数字,使1000显示为1.000,00

How to format clean numbers so 1000 appear as 1.000,00

本问题已经有最佳答案,请猛点这里访问。

我目前有一些干净的数字,如:
1, 10, 100, 1000, 10000等......

我想要格式化这些数字,所以它们显示为:

1
2
3
4
5
1,00
10,00
100,00
1.000,00
10.000,00

我玩n.toFixed(2);,但似乎不支持我正在寻找的格式。

有任何想法吗?


查看Intl.NumberFormat(),不需要花哨的裤子插件。 跨平台支持。

1
2
var number = 3500;
alert(new Intl.NumberFormat().format(number));

会弹出'3,500'


如果您想要一个简单的功能来完成这项工作,以下内容可能适合:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
// Format a number n using:
//   p decimal places (two by default)
//   ts as the thousands separator (comma by default) and
//   dp as the  decimal point (period by default).
//
//   If p < 0 or p > 20 results are implementation dependent.
function formatNumber(n, p, ts, dp) {
  var t = [];
  // Get arguments, set defaults
  if (typeof p  == 'undefined') p  = 2;
  if (typeof ts == 'undefined') ts = ',';
  if (typeof dp == 'undefined') dp = '.';

  // Get number and decimal part of n
  n = Number(n).toFixed(p).split('.');

  // Add thousands separator and decimal point (if requied):
  for (var iLen = n[0].length, i = iLen? iLen % 3 || 3 : 0, j = 0; i <= iLen; i+=3) {
    t.push(n[0].substring(j, i));
    j = i;
  }
  // Insert separators and return result
  return t.join(ts) + (n[1]? dp + n[1] : '');
}


//*
console.log(formatNumber(
    1234567890.567,  // value to format
                 4,  // number of decimal places
               '.',  // thousands separator
                ','  // decimal separator
 ));                 // result: 1.234.567.890,5670
//*/

console.log(formatNumber(
           123.567,  // value to format
                 1   // number of decimal places
 ));                 // result: 123.6

console.log(formatNumber(
         '123.567',  // value to format
                 0   // number of decimal places
 ));                 // result: 123.6

console.log(formatNumber(
               123,  // value to format
                 0   // number of decimal places
 ));                 // result: 123

console.log(formatNumber(
                13,  // value to format
                 2   // number of decimal places
 ));                 // result: 13.00

console.log(formatNumber(
                 0   // value to format
                     // number of decimal places
 ));                 // result: 0.00

console.log(formatNumber(
                     // value to format
                     // number of decimal places
 ));                 // result: NaN

对不起,没有花哨的正则表达式或切片/拼接数组的东西,只有POJS有效。


你可以这样做:

1
2
var nb='1000000000';
var result = nb.replace(/(?:(^\d{1,3})(?=(?:\d{3})*$)|(\d{3}))(?!$)/mg, '$1$2.')+',00';

在JS中没有用于格式化数字的内置方法。 您可以使用autoNumeric。http://www.decorplanit.com/plugin/


我不知道你的情况,但我想使用angularJS。

它正是您正在寻找的,并且还有更多额外的动态格式。

更新:具体了解本地化功能。 如果你需要,它甚至可以提供多元化。