diff --git a/src/ng/filter/filters.js b/src/ng/filter/filters.js index a3c38014c300..f69f65d372fa 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 d60db9de0968..abe180df27bd 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'); }); });