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

Function formatNumber

test/angular/1.7/angular.js:22679–22743  ·  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

22677 * @return {string} The number formatted as a string
22678 */
22679function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
22680
22681 if (!(isString(number) || isNumber(number)) || isNaN(number)) return '';
22682
22683 var isInfinity = !isFinite(number);
22684 var isZero = false;
22685 var numStr = Math.abs(number) + '',
22686 formattedText = '',
22687 parsedNumber;
22688
22689 if (isInfinity) {
22690 formattedText = '\u221e';
22691 } else {
22692 parsedNumber = parse(numStr);
22693
22694 roundNumber(parsedNumber, fractionSize, pattern.minFrac, pattern.maxFrac);
22695
22696 var digits = parsedNumber.d;
22697 var integerLen = parsedNumber.i;
22698 var exponent = parsedNumber.e;
22699 var decimals = [];
22700 isZero = digits.reduce(function(isZero, d) { return isZero && !d; }, true);
22701
22702 // pad zeros for small numbers
22703 while (integerLen < 0) {
22704 digits.unshift(0);
22705 integerLen++;
22706 }
22707
22708 // extract decimals digits
22709 if (integerLen > 0) {
22710 decimals = digits.splice(integerLen, digits.length);
22711 } else {
22712 decimals = digits;
22713 digits = [0];
22714 }
22715
22716 // format the integer digits with grouping separators
22717 var groups = [];
22718 if (digits.length >= pattern.lgSize) {
22719 groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));
22720 }
22721 while (digits.length > pattern.gSize) {
22722 groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));
22723 }
22724 if (digits.length) {
22725 groups.unshift(digits.join(''));
22726 }
22727 formattedText = groups.join(groupSep);
22728
22729 // append the decimal digits
22730 if (decimals.length) {
22731 formattedText += decimalSep + decimals.join('');
22732 }
22733
22734 if (exponent) {
22735 formattedText += 'e+' + exponent;
22736 }

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