Skip to content

Commit 67759d2

Browse files
committed
Merge pull request vuejs#720 from 44px/currency-filter
Return empty string for Infinity and properly format values such as 0.999
2 parents 0b3350f + 085abf8 commit 67759d2

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/filters/index.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,15 @@ var digitsRE = /(\d{3})(?=\d)/g
6161

6262
exports.currency = function (value, sign) {
6363
value = parseFloat(value)
64-
if (!value && value !== 0) return ''
64+
if (!isFinite(value) || (!value && value !== 0)) return ''
6565
sign = sign || '$'
6666
var s = Math.floor(Math.abs(value)).toString(),
6767
i = s.length % 3,
6868
h = i > 0
6969
? (s.slice(0, i) + (s.length > 3 ? ',' : ''))
7070
: '',
71-
f = '.' + value.toFixed(2).slice(-2)
71+
v = Math.abs(parseInt((value * 100) % 100, 10)),
72+
f = '.' + (v < 10 ? ('0' + v) : v)
7273
return (value < 0 ? '-' : '') +
7374
sign + h + s.slice(i).replace(digitsRE, '$1,') + f
7475
}
@@ -132,4 +133,4 @@ exports.key.keyCodes = keyCodes
132133
* Install special array filters
133134
*/
134135

135-
_.extend(exports, require('./array-filters'))
136+
_.extend(exports, require('./array-filters'))

test/unit/specs/filters/filters_spec.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,15 @@ describe('Filters', function () {
6262
expect(filter(1234)).toBe('$1,234.00')
6363
expect(filter(1234.45)).toBe('$1,234.45')
6464
expect(filter(123443434.4343434)).toBe('$123,443,434.43')
65+
expect(filter(0.99999)).toBe('$0.99')
6566
// sign arg
6667
expect(filter(2134, '@')).toBe('@2,134.00')
67-
// falsy and 0
68+
// falsy, infinity and 0
6869
expect(filter(0)).toBe('$0.00')
6970
expect(filter(false)).toBe('')
7071
expect(filter(null)).toBe('')
7172
expect(filter(undefined)).toBe('')
73+
expect(filter(Infinity)).toBe('')
7274
// negative numbers
7375
expect(filter(-50)).toBe('-$50.00')
7476
expect(filter(-150.43)).toBe('-$150.43')

0 commit comments

Comments
 (0)