web-dev-qa-db-ja.com

JQuery番号のフォーマット

この基本的な機能についてはあまりにも多くの質問と回答がありますが、私は木の木材を見ることはできません。

Javaには単純な回答(Java.text.NumberFormatとそのサブクラス)が1つしかないため、プラグイン、質問、回答の大部分は最終的にJQueryの事実上の標準に成熟するはずです。

このプラグインはこれまで見つけた中で最高ですが、まだ開発されているか、成熟しているかなどはわかりません。

http://plugins.jquery.com/project/numberformatter

より良い解決策はありますか?依存するのに十分な成熟/アクティブですか?


編集:

Javaが使用する同じフォーマットパターンに基づいて通貨、10進数、整数をフォーマットできるようにして、クライアント側で受信したデータを最初にサーバーに送信せずにフォーマットできるようにします。

例えば.

1000$1,000または1,000.00などにフォーマットします(ロケールのサポートはいいです)

http://plugins.jquery.com/project/numberformatter は仕事をしているようですが、質問は「私は正しいことを使用していますか?」または「そうするより良い方法はありますか?」

38
Eran Medan

javascriptを使用して基本的なフォーマットを処理する方法に関するこの記事を参照することをお勧めします。

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;
}

ソース: http://www.mredkj.com/javascript/numberFormat.html

JQueryは数百万通りの方法であなたの生活を楽にすることができますが、これはやり過ぎだと思います。 jQueryはかなり大きくなる可能性があり、ページで使用する場合はユーザーのブラウザでダウンロードする必要があることに注意してください。

JQueryを使用するときは、ライブラリをダウンロードするための余分なオーバーヘッドを正当化するのに十分な貢献があるかどうかを確認してください。

何らかの高度な書式設定(リンクしたプラグインのローカリゼーションなど)が必要な場合、またはjQueryをすでに含めている場合は、jQueryプラグインを調べる価値があります。

サイドノート- チェックアウト jQueryの過剰使用についてくすくす笑う場合。

65
Abe Miessler

jQuery Number Format プラグインを使用すると、3つの方法のいずれかでフォーマットされた数値を取得できます。

// Return as a string
$.number( 1234.5678, 2 ); // Returns '1,234.57'

// Place formatted number directly in an element:
$('#mynum').number( 1234.5678 ); // #mynum would then contain '1,235'

// Replace existing number values in any element
$('span.num').number( true, 2 ); // Formats and replaces existing numbers in those elements.

フォーマットが気に入らない場合、またはローカライズする必要がある場合は、数値のフォーマット方法を選択できる他のパラメーターがあります。

.nu​​mber(theNumber、decimalPlaces、decimalSeparator、thousandSeparator)

GitHubのjQuery Number Format も取得できます。

18
Quadrant6

ブラウザ開発の進捗:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

 Number.toLocaleString(locale);

 // E.g.
 parseFloat("1234567.891").toLocaleString(window.document.documentElement.lang);
 "1,234,567.891"
5
elixon

複数の通貨、さまざまな数値形式などを処理する必要がある場合は、 autoNumeric をお勧めします。御Works走。数年前から正常に使用されています。

3
Luftwaffle

これを http://www.mredkj.com/javascript/numberFormat.html$('.number').formatNumber();コンセプトにまとめると、次のコード行を使用できます。

例えば<td class="number">1172907.50</td><td class="number">1,172,907.50</td>のような形式になります

$('.number').text(function () { 
    var str = $(this).html() + ''; 
    x = str.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'); 
    } 
    $(this).html(x1 + x2); 
});
1
user3728612

JavaScriptのPHP関数に類似したものを書きました number_formatAbe MiessleraddCommas関数をベースにしています。役に立つかもしれません。

number_format = function (number, decimals, dec_point, thousands_sep) {
        number = number.toFixed(decimals);

        var nstr = number.toString();
        nstr += '';
        x = nstr.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? dec_point + x[1] : '';
        var rgx = /(\d+)(\d{3})/;

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

        return x1 + x2;
    }

例えば:

var some_number = number_format(42661.55556, 2, ',', ' '); //gives 42 661,56
1
slashka

http://jquerypriceformat.com/#examples

https://github.com/flaviosilveira/Jquery-Price-Format

ライブチャンスのためのHTML入力の実行。

<input type="text" name="v7"  class="priceformat"/>
<input type="text" name="v8"  class="priceformat"/>


$('.priceformat').each(function( index ) {
    $(this).priceFormat({ prefix: '',  thousandsSeparator: '' });
});

//5000.00

//5.000,00

//5,000.00

1
Limitless isa

http://locutus.io/php/strings/number_format/

module.exports = function number_format (number, decimals, decPoint, thousandsSep) { // eslint-disable-enter code hereline camelcase
  //  discuss at: http://locutus.io/php/number_format/
  // original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
  // improved by: Kevin van Zonneveld (http://kvz.io)
  // improved by: davook
  // improved by: Brett Zamir (http://brett-zamir.me)
  // improved by: Brett Zamir (http://brett-zamir.me)
  // improved by: Theriault (https://github.com/Theriault)
  // improved by: Kevin van Zonneveld (http://kvz.io)
  // bugfixed by: Michael White (http://getsprink.com)
  // bugfixed by: Benjamin Lupton
  // bugfixed by: Allan Jensen (http://www.winternet.no)
  // bugfixed by: Howard Yeend
  // bugfixed by: Diogo Resende
  // bugfixed by: Rival
  // bugfixed by: Brett Zamir (http://brett-zamir.me)
  //  revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
  //  revised by: Luke Smith (http://lucassmith.name)
  //    input by: Kheang Hok Chin (http://www.distantia.ca/)
  //    input by: Jay Klehr
  //    input by: Amir Habibi (http://www.residence-mixte.com/)
  //    input by: Amirouche
  //   example 1: number_format(1234.56)
  //   returns 1: '1,235'
  //   example 2: number_format(1234.56, 2, ',', ' ')
  //   returns 2: '1 234,56'
  //   example 3: number_format(1234.5678, 2, '.', '')
  //   returns 3: '1234.57'
  //   example 4: number_format(67, 2, ',', '.')
  //   returns 4: '67,00'
  //   example 5: number_format(1000)
  //   returns 5: '1,000'
  //   example 6: number_format(67.311, 2)
  //   returns 6: '67.31'
  //   example 7: number_format(1000.55, 1)
  //   returns 7: '1,000.6'
  //   example 8: number_format(67000, 5, ',', '.')
  //   returns 8: '67.000,00000'
  //   example 9: number_format(0.9, 0)
  //   returns 9: '1'
  //  example 10: number_format('1.20', 2)
  //  returns 10: '1.20'
  //  example 11: number_format('1.20', 4)
  //  returns 11: '1.2000'
  //  example 12: number_format('1.2000', 3)
  //  returns 12: '1.200'
  //  example 13: number_format('1 000,50', 2, '.', ' ')
  //  returns 13: '100 050.00'
  //  example 14: number_format(1e-8, 8, '.', '')
  //  returns 14: '0.00000001'

  number = (number + '').replace(/[^0-9+\-Ee.]/g, '')
  var n = !isFinite(+number) ? 0 : +number
  var prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
  var sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep
  var dec = (typeof decPoint === 'undefined') ? '.' : decPoint
  var s = ''

  var toFixedFix = function (n, prec) {
    if (('' + n).indexOf('e') === -1) {
      return +(Math.round(n + 'e+' + prec) + 'e-' + prec)
    } else {
      var arr = ('' + n).split('e')
      var sig = ''
      if (+arr[1] + prec > 0) {
        sig = '+'
      }
      return (+(Math.round(+arr[0] + 'e' + sig + (+arr[1] + prec)) + 'e-' + prec)).toFixed(prec)
    }
  }

  // @todo: for IE parseFloat(0.55).toFixed(0) = 0;
  s = (prec ? toFixedFix(n, prec).toString() : '' + 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)
}
0
ezwey