diff options
| author | Paul Meskers | 2013-06-09 16:20:40 -0400 | 
|---|---|---|
| committer | Igor Minar | 2013-07-24 12:05:41 -0700 | 
| commit | a13c01a8e48ea4a0d59394eb94f1b12c50cfef61 (patch) | |
| tree | 81aa6fa7e41c2d1a024bccdefd5fafdf06e7d6af | |
| parent | 454bcfa43848c5b816858faec512de54a974896a (diff) | |
| download | angular.js-a13c01a8e48ea4a0d59394eb94f1b12c50cfef61.tar.bz2 | |
fix(numberFilter): always convert scientific notation to decimal
Previously, the number filter would format small and large numbers
as scientific notation. It now uses toFixed() to ensure that all
requested digits are shown.
| -rw-r--r-- | src/ng/filter/filters.js | 5 | ||||
| -rw-r--r-- | test/ng/filter/filtersSpec.js | 21 | 
2 files changed, 23 insertions, 3 deletions
| diff --git a/src/ng/filter/filters.js b/src/ng/filter/filters.js index f2c87110..8afe2a0f 100644 --- a/src/ng/filter/filters.js +++ b/src/ng/filter/filters.js @@ -171,6 +171,11 @@ function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {      }      if (fractionSize && fractionSize !== "0") formatedText += decimalSep + fraction.substr(0, fractionSize); +  } else { + +    if (fractionSize > 0 && number > -1 && number < 1) { +      formatedText = number.toFixed(fractionSize); +    }    }    parts.push(isNegative ? pattern.negPre : pattern.posPre); diff --git a/test/ng/filter/filtersSpec.js b/test/ng/filter/filtersSpec.js index eb98c355..59883799 100644 --- a/test/ng/filter/filtersSpec.js +++ b/test/ng/filter/filtersSpec.js @@ -145,9 +145,24 @@ describe('filters', function() {        expect(number(1234.567, 2)).toEqual("1,234.57");      }); -    it('should filter exponential numbers', function() { -      expect(number(1e50, 0)).toEqual('1e+50'); -      expect(number(-2e50, 2)).toEqual('-2e+50'); +    it('should filter exponentially large numbers', function() { +      expect(number(1e50)).toEqual('1e+50'); +      expect(number(-2e100)).toEqual('-2e+100'); +    }); + +    it('should ignore fraction sizes for large numbers', function() { +      expect(number(1e50, 2)).toEqual('1e+50'); +      expect(number(-2e100, 5)).toEqual('-2e+100'); +    }); + +    it('should filter exponentially small numbers', function() { +      expect(number(1e-50, 0)).toEqual('0'); +      expect(number(1e-6, 6)).toEqual('0.000001'); +      expect(number(1e-7, 6)).toEqual('0.000000'); + +      expect(number(-1e-50, 0)).toEqual('-0'); +      expect(number(-1e-6, 6)).toEqual('-0.000001'); +      expect(number(-1e-7, 6)).toEqual('-0.000000');      });    }); | 
