MCPcopy Create free account
hub / github.com/apache/cloudstack / formatNumber

Function formatNumber

tools/ngui/static/js/lib/angular.js:9892–9959  ·  view source on GitHub ↗
(number, pattern, groupSep, decimalSep, fractionSize)

Source from the content-addressed store, hash-verified

9890
9891var DECIMAL_SEP = '.';
9892function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
9893 if (isNaN(number) || !isFinite(number)) return '';
9894
9895 var isNegative = number < 0;
9896 number = Math.abs(number);
9897 var numStr = number + '',
9898 formatedText = '',
9899 parts = [];
9900
9901 var hasExponent = false;
9902 if (numStr.indexOf('e') !== -1) {
9903 var match = numStr.match(/([\d\.]+)e(-?)(\d+)/);
9904 if (match && match[2] == '-' && match[3] > fractionSize + 1) {
9905 numStr = '0';
9906 } else {
9907 formatedText = numStr;
9908 hasExponent = true;
9909 }
9910 }
9911
9912 if (!hasExponent) {
9913 var fractionLen = (numStr.split(DECIMAL_SEP)[1] || '').length;
9914
9915 // determine fractionSize if it is not specified
9916 if (isUndefined(fractionSize)) {
9917 fractionSize = Math.min(Math.max(pattern.minFrac, fractionLen), pattern.maxFrac);
9918 }
9919
9920 var pow = Math.pow(10, fractionSize);
9921 number = Math.round(number * pow) / pow;
9922 var fraction = ('' + number).split(DECIMAL_SEP);
9923 var whole = fraction[0];
9924 fraction = fraction[1] || '';
9925
9926 var pos = 0,
9927 lgroup = pattern.lgSize,
9928 group = pattern.gSize;
9929
9930 if (whole.length >= (lgroup + group)) {
9931 pos = whole.length - lgroup;
9932 for (var i = 0; i < pos; i++) {
9933 if ((pos - i)%group === 0 && i !== 0) {
9934 formatedText += groupSep;
9935 }
9936 formatedText += whole.charAt(i);
9937 }
9938 }
9939
9940 for (i = pos; i < whole.length; i++) {
9941 if ((whole.length - i)%lgroup === 0 && i !== 0) {
9942 formatedText += groupSep;
9943 }
9944 formatedText += whole.charAt(i);
9945 }
9946
9947 // format fraction part.
9948 while(fraction.length < fractionSize) {
9949 fraction += '0';

Callers 2

currencyFilterFunction · 0.85
numberFilterFunction · 0.85

Calls 3

isUndefinedFunction · 0.85
matchMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected