aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Meskers2013-06-09 16:20:40 -0400
committerIgor Minar2013-07-24 12:05:41 -0700
commita13c01a8e48ea4a0d59394eb94f1b12c50cfef61 (patch)
tree81aa6fa7e41c2d1a024bccdefd5fafdf06e7d6af
parent454bcfa43848c5b816858faec512de54a974896a (diff)
downloadangular.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.js5
-rw-r--r--test/ng/filter/filtersSpec.js21
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');
});
});