diff --git a/lib/index.js b/lib/index.js index 10bc5f8..a8686e0 100644 --- a/lib/index.js +++ b/lib/index.js @@ -2,10 +2,12 @@ * Comma number formatter * @param {Number} number Number to format * @param {String} [separator=','] Value used to separate numbers + * @param {String} [decimalSeparator='.'] Value used to separate decimal digits * @returns {String} Comma formatted number */ -module.exports = function commaNumber (number, separator) { +module.exports = function commaNumber (number, separator, decimalSeparator) { separator = typeof separator === 'undefined' ? ',' : ('' + separator) + decimalSeparator = typeof decimalSeparator === 'undefined' ? '.' : ('' + decimalSeparator) // Convert to number if it's a non-numeric value if (typeof number !== 'number') { @@ -21,12 +23,21 @@ module.exports = function commaNumber (number, separator) { if (!isFinite(number)) { return '' + number } + + var result = [] + + // Grab decimal part + var decimalString = ('' + number).split(decimalSeparator)[1] + + if (decimalString) { + result[] = decimalSeparator + decimalString + } - var stringNumber = ('' + Math.abs(number)) + // Process integer part + var stringNumber = ('' + Math.abs(Math.floor(number))) .split('') .reverse() - var result = [] for (var i = 0; i < stringNumber.length; i++) { if (i && i % 3 === 0) { result.push(separator) diff --git a/package.json b/package.json index fed2852..ba16558 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "comma-number", - "version": "1.1.0", + "version": "1.2.0", "description": "Format a number with commas", "main": "lib/index.js", "scripts": { diff --git a/test/index.js b/test/index.js index d5accc8..6ffd168 100644 --- a/test/index.js +++ b/test/index.js @@ -21,6 +21,14 @@ test('Formatting', function (t) { [-100000, '-100,000'], [-1000000, '-1,000,000'], [-Infinity, '-Infinity'], + + // Decimal numbers + [-1.1, '-1.1'], + [-100.1, '-100.1'], + [-1000.1, '-1,000.1'], + [-10000.1, '-10,000.1'], + [-100000.1, '-100,000.1'], + [-1000000.1, '-1,000,000.1'] // Strings ['0', '0'],