6

以下のようなJavaスクリプトの数値フォーマットの要件を取得しました

次のような2つのパラメーターを持つ1つの関数が必要です

var number = 1000;
var format = #,###.0; //or #,### ; 

function ConvertNumber(number, format){   
    // this function need to return 1,000.0 if format is #,###.0
    // this function need to return 1,000 if format is #,### 
}

誰でもこの種の機能を持つことができますか?あなたの助けは本当に感謝しています

4

3 に答える 3

3

JQuery からNumberFormatterプラグインを使用できます。

このプラグインの使用例を次に示します。

$("#salary").blur(function(){
    $(this).format({format:"#,###.00", locale:"de"});
});
于 2012-11-22T05:54:43.327 に答える
1

これを試して:

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

  // Strip all characters but numerical ones.
  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);
}​

例:

example 1: ConvertNumber(1234.5678, 2, '.', ',');
returns 1: '1,234.57'

example 2: ConvertNumber(1000);
returns 2: '1,000'

example 3: ConvertNumber(1000.55, 1);
returns 3: '1,000.6'

example 4: ConvertNumber(67000, 5, ',', '.');
returns 4: '67.000,00000'

example 5: ConvertNumber('1.20', 4);
returns 5: '1.2000'
于 2012-11-22T08:02:52.460 に答える
1

この機能を確認してください...

var number = 1000; // int or float or string
var format = '#,###.0'; // you can put any format that you want... only string

function ConvertNumber(number, format){
    var tail=format.lastIndexOf('.');number=number.toString();
    tail=tail>-1?format.substr(tail):'';
    if(tail.length>0){if(tail.charAt(1)=='#'){
        tail=number.substr(number.lastIndexOf('.'),tail.length);
    }}
    number=number.replace(/\..*|[^0-9]/g,'').split('');
    format=format.replace(/\..*/g,'').split('');
    for(var i=format.length-1;i>-1;i--){
        if(format[i]=='#'){format[i]=number.pop()}
    }
    return number.join('')+format.join('')+tail;
}

// Examples
// ConvertNumber(1234,'#,###') === 1,234
// ConvertNumber(1234,'#,###.00') === 1,234.00
// ConvertNumber(1234,',###.00') === 1,234.00
// ConvertNumber(1234.4575,',###.##') === 1,234.45
// ConvertNumber(1234567890.4575,',###,###,###.##') === 1,234,567,890.45
// ConvertNumber(123.4575,',#,#.##') === 1,2,3.45
// ConvertNumber(123456.4575,'-#-#.##') === 1234-5-6.45
// ConvertNumber(1234567.4575,' ## ###.##') === 12 34 567.45

この機能があなたと同じ問題を抱えている人にとって非常に役立つことを願っています...幸運を祈ります...

于 2012-11-22T08:36:48.103 に答える