如何使用jquery格式化数字

我试图删除“。”之后的数字。 然后我想格式化数字(16810900.211233)喜欢这个(16,810,900),但我不知道该怎么做这里是我的HTML是这样的:

 

10200.00

16810900.211233

0

-

1278200.543554

-

-

9,890.656

10,200

16810900

0

-

1278200.09

-

-

9890.00

我在这里试过jsfiddle

摘自http://ntt.cc/2008/04/25/6-very-basic-but-very-useful-javascript-number-format-functions-for-web-developers.html

没有必要重新发明轮子.. 🙂

 /** * Formats the number according to the 'format' string; * adherses to the american number standard where a comma * is inserted after every 3 digits. * note: there should be only 1 contiguous number in the format, * where a number consists of digits, period, and commas * any other characters can be wrapped around this number, including '$', '%', or text * examples (123456.789): * '0′ - (123456) show only digits, no precision * '0.00′ - (123456.78) show only digits, 2 precision * '0.0000′ - (123456.7890) show only digits, 4 precision * '0,000′ - (123,456) show comma and digits, no precision * '0,000.00′ - (123,456.78) show comma and digits, 2 precision * '0,0.00′ - (123,456.78) shortcut method, show comma and digits, 2 precision * * @method format * @param format {string} the way you would like to format this text * @return {string} the formatted number * @public */ Number.prototype.format = function(format) { if (! isType(format, 'string')) {return ”;} // sanity check var hasComma = -1 < format.indexOf(','), psplit = format.stripNonNumeric().split('.'), that = this; // compute precision if (1 < psplit.length) { // fix number precision that = that.toFixed(psplit[1].length); } // error: too many periods else if (2 < psplit.length) { throw('NumberFormatException: invalid format, formats should have no more than 1 period: ' + format); } // remove precision else { that = that.toFixed(0); } // get the string now that precision is correct var fnum = that.toString(); // format has comma, then compute commas if (hasComma) { // remove precision for computation psplit = fnum.split('.'); var cnum = psplit[0], parr = [], j = cnum.length, m = Math.floor(j / 3), n = cnum.length % 3 || 3; // n cannot be ZERO or causes infinite loop // break the number into chunks of 3 digits; first chunk may be less than 3 for (var i = 0; i < j; i += n) { if (i != 0) {n = 3;} parr[parr.length] = cnum.substr(i, n); m -= 1; } // put chunks back together, separated by comma fnum = parr.join(','); // add the precision back in if (psplit[1]) {fnum += '.' + psplit[1];} } // replace the number portion of the format with fnum return format.replace(/[\d,?\.?]+/, fnum); }; 

Globalize库是实现目标的最简单方法。 这允许您为不同文化处理编号分组的方式指定格式和帐户。 例如:

 Globalize.format(Math.round(16810900.211233)) 

结果为16,810,900

 $("p").text(function(i, v) { if (v == "-") return v; // or whatever you want to to with these v = v.split(".")[0]; // remove anything after the first "." v = v.replace(/[^\d]/g, ""); // remove non-numeric characters var group = 3; var min = v.length > 4 ? group : 4; // format thousands without separator for (var res=[], i=v.length; i>min; i-=group) res.push(v.substr(i-group, group)); res.push(v.substr(0,i)); return res.reverse().join("."); }); 

这将格式化数字,即使没有为4字符数设置千分隔符。