From 408e868237d80f9332f2c540f91b2809d9938fbc Mon Sep 17 00:00:00 2001 From: Paul Meskers Date: Sun, 9 Jun 2013 16:20:40 -0400 Subject: 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. --- src/ng/filter/filters.js | 5 +++++ 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 a3c38014..f69f65d3 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 d60db9de..abe180df 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'); }); }); -- cgit v1.2.3