in globalize/globalize.ts [697:758]
expandNumber = function (number, precision, formatInfo) {
var groupSizes = formatInfo.groupSizes,
curSize = groupSizes[0],
curGroupIndex = 1,
factor = Math.pow(10, precision),
rounded = Math.round(number * factor) / factor;
if (!isFinite(rounded)) {
rounded = number;
}
number = rounded;
var numberString = number + "",
right = "",
split = numberString.split(/e/i),
exponent = split.length > 1 ? parseInt(split[1], 10) : 0;
numberString = split[0];
split = numberString.split(".");
numberString = split[0];
right = split.length > 1 ? split[1] : "";
var l;
if (exponent > 0) {
right = zeroPad(right, exponent, false);
numberString += right.slice(0, exponent);
right = right.substr(exponent);
}
else if (exponent < 0) {
exponent = -exponent;
numberString = zeroPad(numberString, exponent + 1);
right = numberString.slice(-exponent, numberString.length) + right;
numberString = numberString.slice(0, -exponent);
}
if (precision > 0) {
right = formatInfo["."] +
((right.length > precision) ? right.slice(0, precision) : zeroPad(right, precision));
}
else {
right = "";
}
var stringIndex = numberString.length - 1,
sep = formatInfo[","],
ret = "";
while (stringIndex >= 0) {
if (curSize === 0 || curSize > stringIndex) {
return numberString.slice(0, stringIndex + 1) + (ret.length ? (sep + ret + right) : right);
}
ret = numberString.slice(stringIndex - curSize + 1, stringIndex + 1) + (ret.length ? (sep + ret) : "");
stringIndex -= curSize;
if (curGroupIndex < groupSizes.length) {
curSize = groupSizes[curGroupIndex];
curGroupIndex++;
}
}
return numberString.slice(0, stringIndex + 1) + sep + ret + right;
};