MCPcopy
hub / github.com/angular-ui/ui-router / formatNumber

Function formatNumber

test/angular/1.4/angular.js:19193–19257  ·  view source on GitHub ↗

* Format a number into a string * @param {number} number The number to format * @param {{ * minFrac, // the minimum number of digits required in the fraction part of the number * maxFrac, // the maximum number of digits required in the fraction part of the number *

(number, pattern, groupSep, decimalSep, fractionSize)

Source from the content-addressed store, hash-verified

19191 * @return {string} The number formatted as a string
19192 */
19193function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
19194
19195 if (!(isString(number) || isNumber(number)) || isNaN(number)) return '';
19196
19197 var isInfinity = !isFinite(number);
19198 var isZero = false;
19199 var numStr = Math.abs(number) + '',
19200 formattedText = '',
19201 parsedNumber;
19202
19203 if (isInfinity) {
19204 formattedText = '\u221e';
19205 } else {
19206 parsedNumber = parse(numStr);
19207
19208 roundNumber(parsedNumber, fractionSize, pattern.minFrac, pattern.maxFrac);
19209
19210 var digits = parsedNumber.d;
19211 var integerLen = parsedNumber.i;
19212 var exponent = parsedNumber.e;
19213 var decimals = [];
19214 isZero = digits.reduce(function(isZero, d) { return isZero && !d; }, true);
19215
19216 // pad zeros for small numbers
19217 while (integerLen < 0) {
19218 digits.unshift(0);
19219 integerLen++;
19220 }
19221
19222 // extract decimals digits
19223 if (integerLen > 0) {
19224 decimals = digits.splice(integerLen, digits.length);
19225 } else {
19226 decimals = digits;
19227 digits = [0];
19228 }
19229
19230 // format the integer digits with grouping separators
19231 var groups = [];
19232 if (digits.length >= pattern.lgSize) {
19233 groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));
19234 }
19235 while (digits.length > pattern.gSize) {
19236 groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));
19237 }
19238 if (digits.length) {
19239 groups.unshift(digits.join(''));
19240 }
19241 formattedText = groups.join(groupSep);
19242
19243 // append the decimal digits
19244 if (decimals.length) {
19245 formattedText += decimalSep + decimals.join('');
19246 }
19247
19248 if (exponent) {
19249 formattedText += 'e+' + exponent;
19250 }

Callers 2

currencyFilterFunction · 0.70
numberFilterFunction · 0.70

Calls 4

isStringFunction · 0.70
isNumberFunction · 0.70
parseFunction · 0.70
roundNumberFunction · 0.70

Tested by

no test coverage detected