5个javascript的数字格式化函数分享

十进制四舍五入

  这两段代码帮助你做到四舍五入,对于你显示价格或者订单比较有用:

  代码1:

  

复制代码 代码如下:

  function CurrencyFormatted(amount) {

  var i = parseFloat(amount);

  if(isNaN(i)) { i = 0.00; }

  var minus = '';

  if(i < 0) { minus = '-'; }

  i = Math.abs(i);

  i = parseInt((i + .005) * 100);

  i = i / 100;

  s = new String(i);

  if(s.indexOf('.') < 0) { s += '.00'; }

  if(s.indexOf('.') == (s.length - 2)) { s += '0'; }

  s = minus + s;

  return s;

  }

  /**

  * Usage: CurrencyFormatted(12345.678);

  * result: 12345.68

  **/

  代码2:

  

复制代码 代码如下:

  function format_number(pnumber,decimals){

  if (isNaN(pnumber)) { return 0};

  if (pnumber=='') { return 0};

  var snum = new String(pnumber);

  var sec = snum.split('.');

  var whole = parseFloat(sec[0]);

  var result = '';

  if(sec.length > 1){

  var dec = new String(sec[1]);

  dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals)));

  dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals));

  var dot = dec.indexOf('.');

  if(dot == -1){

  dec += '.';

  dot = dec.indexOf('.');

  }

  while(dec.length <= dot + decimals) { dec += '0'; }

  result = dec;

  } else{

  var dot;

  var dec = new String(whole);

  dec += '.';

  dot = dec.indexOf('.');

  while(dec.length <= dot + decimals) { dec += '0'; }

  result = dec;

  }

  return result;

  }

  /**

  * Usage: format_number(12345.678, 2);

  * result: 12345.68

  **/

  添加逗号

  这俩段代码帮助你添加逗号到每三位数字中,这让大的数字比较容易查看。

  代码1:

  

复制代码 代码如下:

  function CommaFormatted(amount) {

  var delimiter = ","; // replace comma if desired

  amount = new String(amount);

  var a = amount.split('.',2)

  var d = a[1];

  var i = parseInt(a[0]);

  if(isNaN(i)) { return ''; }

  var minus = '';

  if(i < 0) { minus = '-'; }

  i = Math.abs(i);

  var n = new String(i);

  var a = [];

  while(n.length > 3)

  {

  var nn = n.substr(n.length-3);

  a.unshift(nn);

  n = n.substr(0,n.length-3);

  }

  if(n.length > 0) { a.unshift(n); }

  n = a.join(delimiter);

  if(d.length < 1) { amount = n; }

  else { amount = n + '.' + d; }

  amount = minus + amount;

  return amount;

  }

  /**

  * Usage: CommaFormatted(12345678);

  * result: 12,345,678

  **/

  代码2:

  

复制代码 代码如下:

  function addCommas(nStr) {

  nStr += '';

  var x = nStr.split('.');

  var x1 = x[0];

  var x2 = x.length >; 1 ? '.' + x[1] : '';

  var rgx = /(d+)(d{3})/;

  while (rgx.test(x1)) {

  x1 = x1.replace(rgx, '$1' + ',' + '$2');

  }

  return x1 + x2;

  }

  /**

  * Usage: addCommas(12345678);

  * result: 12,345,678

  **/

  数字格式化,来自PHP

  这段javascript代码功能设计来自PHP的nubmer_format功能。能够四舍五入并且加入逗号分隔。而且可以自定义10进制分隔。

  

复制代码 代码如下:

  function number_format (number, decimals, dec_point, thousands_sep) {

  number = (number + '').replace(/[^0-9+-Ee.]/g, '');

  var n = !isFinite(+number) ? 0 : +number,

  prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),

  sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,

  dec = (typeof dec_point === 'undefined') ? '.' : dec_point,

  s = '',

  toFixedFix = function (n, prec) {

  var k = Math.pow(10, prec);

  return '' + Math.round(n * k) / k;

  };

  // Fix for IE parseFloat(0.55).toFixed(0) = 0;

  s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');

  if (s[0].length > 3) {

  s[0] = s[0].replace(/B(?=(?:d{3})+(?!d))/g, sep);

  }

  if ((s[1] || '').length < prec) {

  s[1] = s[1] || '';

  s[1] += new Array(prec - s[1].length + 1).join('0');

  }

  return s.join(dec);

  }

  /**

  * Usage: number_format(123456.789, 2, '.', ',');

  * result: 123,456.79

  **/

  添加一个英文的排序后缀

  

复制代码 代码如下:

  Number.prototype.toOrdinal = function() {

  var n = this % 100;

  var suffix = ['th', 'st', 'nd', 'rd', 'th'];

  var ord = n < 21 ? (n < 4 ? suffix[n] : suffix[0]) : (n % 10 > 4 ? suffix[0] : suffix[n % 10]);

  return this + ord;

  }

  /*

  * Usage:

  * var myNumOld = 23

  * var myNumNew = myNumOld.toOrdinal()

  * Result: 23rd

  */

  除去非数字的字符

  

复制代码 代码如下:

  function stripNonNumeric( str )

  {

  str += '';

  var rgx = /^d|.|-$/;

  var out = '';

  for( var i = 0; i < str.length; i++ )

  {

  if( rgx.test( str.charAt(i) ) ){

  if( !( ( str.charAt(i) == '.' && out.indexOf( '.' ) != -1 ) ||

  ( str.charAt(i) == '-' && out.length != 0 ) ) ){

  out += str.charAt(i);

  }

  }

  }

  return out;

  }

  /*

  * Usage: stripNonNumeric('123et45dhs6.789');

  * Result: 123456.789

  */