MCPcopy Index your code
hub / github.com/angular-ui/ui-router / formatNumber

Function formatNumber

test/angular/1.5/angular.js:20907–20971  ·  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

20905 * @return {string} The number formatted as a string
20906 */
20907function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
20908
20909 if (!(isString(number) || isNumber(number)) || isNaN(number)) return '';
20910
20911 var isInfinity = !isFinite(number);
20912 var isZero = false;
20913 var numStr = Math.abs(number) + '',
20914 formattedText = '',
20915 parsedNumber;
20916
20917 if (isInfinity) {
20918 formattedText = '\u221e';
20919 } else {
20920 parsedNumber = parse(numStr);
20921
20922 roundNumber(parsedNumber, fractionSize, pattern.minFrac, pattern.maxFrac);
20923
20924 var digits = parsedNumber.d;
20925 var integerLen = parsedNumber.i;
20926 var exponent = parsedNumber.e;
20927 var decimals = [];
20928 isZero = digits.reduce(function(isZero, d) { return isZero && !d; }, true);
20929
20930 // pad zeros for small numbers
20931 while (integerLen < 0) {
20932 digits.unshift(0);
20933 integerLen++;
20934 }
20935
20936 // extract decimals digits
20937 if (integerLen > 0) {
20938 decimals = digits.splice(integerLen, digits.length);
20939 } else {
20940 decimals = digits;
20941 digits = [0];
20942 }
20943
20944 // format the integer digits with grouping separators
20945 var groups = [];
20946 if (digits.length >= pattern.lgSize) {
20947 groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));
20948 }
20949 while (digits.length > pattern.gSize) {
20950 groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));
20951 }
20952 if (digits.length) {
20953 groups.unshift(digits.join(''));
20954 }
20955 formattedText = groups.join(groupSep);
20956
20957 // append the decimal digits
20958 if (decimals.length) {
20959 formattedText += decimalSep + decimals.join('');
20960 }
20961
20962 if (exponent) {
20963 formattedText += 'e+' + exponent;
20964 }

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