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

Function formatNumber

test/angular/1.6/angular.js:21847–21911  ·  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

21845 * @return {string} The number formatted as a string
21846 */
21847function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
21848
21849 if (!(isString(number) || isNumber(number)) || isNaN(number)) return '';
21850
21851 var isInfinity = !isFinite(number);
21852 var isZero = false;
21853 var numStr = Math.abs(number) + '',
21854 formattedText = '',
21855 parsedNumber;
21856
21857 if (isInfinity) {
21858 formattedText = '\u221e';
21859 } else {
21860 parsedNumber = parse(numStr);
21861
21862 roundNumber(parsedNumber, fractionSize, pattern.minFrac, pattern.maxFrac);
21863
21864 var digits = parsedNumber.d;
21865 var integerLen = parsedNumber.i;
21866 var exponent = parsedNumber.e;
21867 var decimals = [];
21868 isZero = digits.reduce(function(isZero, d) { return isZero && !d; }, true);
21869
21870 // pad zeros for small numbers
21871 while (integerLen < 0) {
21872 digits.unshift(0);
21873 integerLen++;
21874 }
21875
21876 // extract decimals digits
21877 if (integerLen > 0) {
21878 decimals = digits.splice(integerLen, digits.length);
21879 } else {
21880 decimals = digits;
21881 digits = [0];
21882 }
21883
21884 // format the integer digits with grouping separators
21885 var groups = [];
21886 if (digits.length >= pattern.lgSize) {
21887 groups.unshift(digits.splice(-pattern.lgSize, digits.length).join(''));
21888 }
21889 while (digits.length > pattern.gSize) {
21890 groups.unshift(digits.splice(-pattern.gSize, digits.length).join(''));
21891 }
21892 if (digits.length) {
21893 groups.unshift(digits.join(''));
21894 }
21895 formattedText = groups.join(groupSep);
21896
21897 // append the decimal digits
21898 if (decimals.length) {
21899 formattedText += decimalSep + decimals.join('');
21900 }
21901
21902 if (exponent) {
21903 formattedText += 'e+' + exponent;
21904 }

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