diff options
| author | Misko Hevery | 2011-03-19 09:48:52 +0530 | 
|---|---|---|
| committer | Misko Hevery | 2011-06-08 13:49:09 -0700 | 
| commit | d6eba8f39ff78061a4f9bfaefa1bb1f592f7e0ef (patch) | |
| tree | 8982d1bb7f6b5f438ddc1e2a479624284ca4a571 /src/filters.js | |
| parent | 4295b3dded510affe75f7fe6b56f4747385b864c (diff) | |
| download | angular.js-d6eba8f39ff78061a4f9bfaefa1bb1f592f7e0ef.tar.bz2 | |
Number filter would return incorrect value when fractional part had leading zeros.
Diffstat (limited to 'src/filters.js')
| -rw-r--r-- | src/filters.js | 47 | 
1 files changed, 29 insertions, 18 deletions
| diff --git a/src/filters.js b/src/filters.js index 63dbbd7f..49091e81 100644 --- a/src/filters.js +++ b/src/filters.js @@ -62,7 +62,7 @@   */  angularFilter.currency = function(amount){    this.$element.toggleClass('ng-format-negative', amount < 0); -  return '$' + angularFilter['number'].apply(this, [amount, 2]); +  return '$' + angularFilter.number.apply(this, [amount, 2]);  };  /** @@ -108,28 +108,39 @@ angularFilter.number = function(number, fractionSize){    if (isNaN(number) || !isFinite(number)) {      return '';    } -  fractionSize = typeof fractionSize == $undefined ? 2 : fractionSize; -  var isNegative = number < 0; -  number = Math.abs(number); -  var pow = Math.pow(10, fractionSize); -  var text = "" + Math.round(number * pow); -  var whole = text.substring(0, text.length - fractionSize); -  whole = whole || '0'; -  var frc = text.substring(text.length - fractionSize); -  text = isNegative ? '-' : ''; -  for (var i = 0; i < whole.length; i++) { +  fractionSize = isUndefined(fractionSize)? 2 : fractionSize; + +  var isNegative = number < 0, +      pow = Math.pow(10, fractionSize), +      whole = '' + number, +      formatedText = '', +      i; + +  if (whole.indexOf('e') > -1) return whole; + +  number = Math.round(number * pow) / pow; +  fraction = ('' + number).split('.'); +  whole = fraction[0]; +  fraction = fraction[1] || ''; +  if (isNegative) { +    formatedText = '-'; +    whole = whole.substring(1); +  } + + +  for (i = 0; i < whole.length; i++) {      if ((whole.length - i)%3 === 0 && i !== 0) { -      text += ','; +      formatedText += ',';      } -    text += whole.charAt(i); +    formatedText += whole.charAt(i);    } -  if (fractionSize > 0) { -    for (var j = frc.length; j < fractionSize; j++) { -      frc += '0'; +  if (fractionSize) { +    while(fraction.length < fractionSize) { +      fraction += '0';      } -    text += '.' + frc.substring(0, fractionSize); +    formatedText += '.' + fraction.substring(0, fractionSize);    } -  return text; +  return formatedText;  }; | 
