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

Commit 0388eed

Browse files
lgalfasopetebacondarwin
authored andcommitted
fix(numberFilter): fix rounding error edge case
Fix a number rounding error. Closes #7453 Closes #7478
1 parent 82448b8 commit 0388eed

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/ng/filter/filters.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@ function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
145145
fractionSize = Math.min(Math.max(pattern.minFrac, fractionLen), pattern.maxFrac);
146146
}
147147

148-
var pow = Math.pow(10, fractionSize);
149-
number = Math.round(number * pow) / pow;
148+
var pow = Math.pow(10, fractionSize + 1);
149+
number = Math.floor(number * pow + 5) / pow;
150150
var fraction = ('' + number).split(DECIMAL_SEP);
151151
var whole = fraction[0];
152152
fraction = fraction[1] || '';

test/ng/filter/filtersSpec.js

+4
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,10 @@ describe('filters', function() {
148148
expect(number(1234.567, 0)).toEqual("1,235");
149149
expect(number(1234.567, 1)).toEqual("1,234.6");
150150
expect(number(1234.567, 2)).toEqual("1,234.57");
151+
expect(number(1.255, 0)).toEqual("1");
152+
expect(number(1.255, 1)).toEqual("1.3");
153+
expect(number(1.255, 2)).toEqual("1.26");
154+
expect(number(1.255, 3)).toEqual("1.255");
151155
});
152156

153157
it('should filter exponentially large numbers', function() {

0 commit comments

Comments
 (0)