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.
This commit is contained in:
Paul Meskers 2013-06-09 16:20:40 -04:00 committed by Igor Minar
parent 454bcfa438
commit a13c01a8e4
2 changed files with 23 additions and 3 deletions

View file

@ -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);

View file

@ -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');
});
});