MCPcopy Create free account
hub / github.com/OpenReservation/OpenReservation / formatNumber

Function formatNumber

OpenReservation/wwwroot/Scripts/angular.js:20164–20227  ·  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

(number, pattern, groupSep, decimalSep, fractionSize)

Source from the content-addressed store, hash-verified

20162 * @return {string} The number formatted as a string
20163 */
20164 function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) {
20165 if (!(isString(number) || isNumber(number)) || isNaN(number)) return '';
20166
20167 var isInfinity = !isFinite(number);
20168 var isZero = false;
20169 var numStr = Math.abs(number) + '',
20170 formattedText = '',
20171 parsedNumber;
20172
20173 if (isInfinity) {
20174 formattedText = '\u221e';
20175 } else {
20176 parsedNumber = parse(numStr);
20177
20178 roundNumber(parsedNumber, fractionSize, pattern.minFrac, pattern.maxFrac);
20179
20180 var digits = parsedNumber.d;
20181 var integerLen = parsedNumber.i;
20182 var exponent = parsedNumber.e;
20183 var decimals = [];
20184 isZero = digits.reduce(function (isZero, d) { return isZero && !d; }, true);
20185
20186 // pad zeros for small numbers
20187 while (integerLen < 0) {
20188 digits.unshift(0);
20189 integerLen++;
20190 }
20191
20192 // extract decimals digits
20193 if (integerLen > 0) {
20194 decimals = digits.splice(integerLen);
20195 } else {
20196 decimals = digits;
20197 digits = [0];
20198 }
20199
20200 // format the integer digits with grouping separators
20201 var groups = [];
20202 if (digits.length > pattern.lgSize) {
20203 groups.unshift(digits.splice(-pattern.lgSize).join(''));
20204 }
20205 while (digits.length > pattern.gSize) {
20206 groups.unshift(digits.splice(-pattern.gSize).join(''));
20207 }
20208 if (digits.length) {
20209 groups.unshift(digits.join(''));
20210 }
20211 formattedText = groups.join(groupSep);
20212
20213 // append the decimal digits
20214 if (decimals.length) {
20215 formattedText += decimalSep + decimals.join('');
20216 }
20217
20218 if (exponent) {
20219 formattedText += 'e+' + exponent;
20220 }
20221 }

Callers 2

currencyFilterFunction · 0.70
numberFilterFunction · 0.70

Calls 4

isStringFunction · 0.85
isNumberFunction · 0.85
parseFunction · 0.85
roundNumberFunction · 0.85

Tested by

no test coverage detected