Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit ae952fb

Browse files
smillibtford
authored andcommitted
fix(numberFilter): format numbers that round to zero as nonnegative
Previously when a negative number was rounded to 0 by the number filter it would be formated as a negative number. This means something like {{ -0.01 | number: 1 }} would output -0.0. Now it will ouput 0.0 instead. Closes #8489
1 parent 73157b0 commit ae952fb

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/ng/filter/filters.js

+4
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,10 @@ function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
161161
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/round
162162
number = +(Math.round(+(number.toString() + 'e' + fractionSize)).toString() + 'e' + -fractionSize);
163163

164+
if (number === 0) {
165+
isNegative = false;
166+
}
167+
164168
var fraction = ('' + number).split(DECIMAL_SEP);
165169
var whole = fraction[0];
166170
fraction = fraction[1] || '';

test/ng/filter/filtersSpec.js

+6-1
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,11 @@ describe('filters', function() {
8383
num = formatNumber(123.1, pattern, ',', '.', 3);
8484
expect(num).toBe('123.100');
8585
});
86+
87+
it('should format numbers that round to zero as nonnegative', function(){
88+
var num = formatNumber(-0.01, pattern, ',', '.', 1);
89+
expect(num).toBe('0.0');
90+
});
8691
});
8792

8893
describe('currency', function() {
@@ -184,7 +189,7 @@ describe('filters', function() {
184189
expect(number(1e-6, 6)).toEqual('0.000001');
185190
expect(number(1e-7, 6)).toEqual('0.000000');
186191

187-
expect(number(-1e-50, 0)).toEqual('-0');
192+
expect(number(-1e-50, 0)).toEqual('0');
188193
expect(number(-1e-6, 6)).toEqual('-0.000001');
189194
expect(number(-1e-7, 6)).toEqual('-0.000000');
190195
});

0 commit comments

Comments
 (0)