js-abbreviation-number
Version:
Abbreviate numbers in javascript
38 lines (37 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var const_1 = require("./const");
var defaultOptions = {
padding: true,
symbols: const_1.defaultSymbols,
};
function abbreviateNumber(num, digit, options) {
if (digit === void 0) { digit = 1; }
// Previous options style
if (Array.isArray(options)) {
options = { symbols: options };
}
var _a = Object.assign({}, defaultOptions, options), symbols = _a.symbols, padding = _a.padding;
// handle negatives
var sign = Math.sign(num) >= 0;
num = Math.abs(num);
// what tier? (determines SI symbol)
var tier = (Math.log10(num) / 3) | 0;
// if zero, we don't need a suffix
if (tier == 0)
return (!sign ? "-" : "") + num.toString();
// get suffix and determine scale
var suffix = symbols[tier];
if (!suffix)
throw new RangeError();
var scale = Math.pow(10, tier * 3);
// scale the number
var scaled = num / scale;
var rounded = scaled.toFixed(digit);
if (!padding) {
rounded = String(Number(rounded));
}
// format number and add suffix
return (!sign ? "-" : "") + rounded + suffix;
}
exports.abbreviateNumber = abbreviateNumber;