2012-03-16 31 views
7

thể trùng lặp:
How to format numbers using javascript?Làm cách nào để thêm một nghìn seperator vào một số trong JavaScript?

Tôi muốn thêm một seperator ngàn, như ., một số trong JavaScript.

1000 -> 1.000 
1000000 -> 1.000.000 

cách thanh lịch nhất để làm điều đó là gì?

+0

Khá một số điều, nhưng không ai không thực sự làm việc, vì vậy tôi nghĩ rằng nó không đáng chèn chúng ở đây. –

+1

Đó là giá trị ít nhất là đề cập đến chúng. Để chúng tôi biết bạn đã thử và thất bại. Vì vậy, bạn đã thử những gì? :) –

+1

có thể trùng lặp của [Cách định dạng số bằng javascript?] (Http://stackoverflow.com/questions/5731193/how-to-format-numbers-using-javascript) và [Định dạng số trong javascript] (http: //stackoverflow.com/questions/1068284/format-numbers-in-javascript). Vui lòng sử dụng tìm kiếm trước khi bạn đặt câu hỏi mới. –

Trả lời

19

Tôi không biết gì về tao nhã ...

function addCommas(n){ 
    var rx= /(\d+)(\d{3})/; 
    return String(n).replace(/^\d+/, function(w){ 
     while(rx.test(w)){ 
      w= w.replace(rx, '$1,$2'); 
     } 
     return w; 
    }); 
} 

addCommas ('123.456.789.456,34');

giá trị trả về: (String) 123,456,789,456.34

1

Đây là một chức năng để thêm dấu phẩy, tìm thấy ở đây: http://www.mredkj.com/javascript/nfbasic.html

function addCommas(nStr) 
{ 
    var sep = ','; 
    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' + sep + '$2'); 
    } 
    return x1 + x2; 
} 

tôi sửa đổi mã một chút để thêm var sep = ',';, vì vậy bạn có thể thay đổi dấu phân cách của bạn dễ dàng, tùy thuộc vào ngôn ngữ.

2

Dưới đây là quan điểm của tôi (chỉ để cho vui):

var num = 1000000; 
var cnt = 0; // temp counter. 
var s = String(num).split(''). 
        reverse(). 
        map(function(v) { 
         if (cnt < 2) { 
          cnt += 1; 
          return v; 
         } else { 
          cnt = 0; 
          return ',' + v; 
         } 
        }). 
        reverse(). 
        join(''); 
// 1,000,000 
5

Hãy thử một biểu thức chính quy như:

function formatNumber(num) 
{ 
    return ("" + num).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, function($1) { return $1 + "." }); 
} 

alert(formatNumber(100000)); 

Thành thật mà nói, tôi thấy nó here, trong khi đã cố gắng giải quyết vấn đề của bạn.

3

Bạn có thể sử dụng đoạn mã sau để thực hiện công việc:

(10000000 + "").split('').reverse().map(function (value, i) { 
    return (!(i % 3)) ? "." + value : value; 
}).reverse().join(''); 
Các vấn đề liên quan