tokenlon-sdk
Version:
imToken Tokenlon API for node
64 lines • 2.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var _ = require("lodash");
var math_1 = require("./math");
var toLocaleStringSupportsLocales = function () {
var num = 0;
try {
num.toLocaleString('i');
}
catch (e) {
return e.name === 'RangeError';
}
return false;
};
exports.thousandCommas = function (num, min, max) {
if (min === void 0) { min = 4; }
if (max === void 0) { max = 8; }
if (min > max) {
throw new Error('maximumFractionDigits value is out of range');
}
if (!toLocaleStringSupportsLocales()) {
var n = Number(num).toFixed(max); // 限制小数位长度 3.14159000265359 => 3.14159000
var parts = Number(n).toString().split('.'); // 小数位去零 3.14159000 => ["3", "14159"]
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ',');
return parts.join('.');
}
return Number(num).toLocaleString('en-US', { minimumFractionDigits: min, maximumFractionDigits: max });
};
exports.decimal = function (num, place) {
if (place === void 0) { place = 4; }
if (!num || Number(num) === 0)
return '0';
return math_1.toFixed(num, place);
};
exports.formatMoney = function (value, place) {
if (place === void 0) { place = 4; }
return +value > 0.0001 ? exports.decimal(value, place) : exports.thousandCommas(value, +place, 8);
};
var fillHelper = function (v, fill) {
if (_.isUndefined(fill) || fill) {
return v;
}
var result = math_1.toBN(v).toString();
if (result.indexOf('.') !== -1) {
return result;
}
return math_1.toBN(v).toFixed(2);
};
// 统一小数点后位数量 fill 传递 false 表示如果后面都是 0,会移除
exports.formatNumHelper = function (place) {
return function (value, fill) { return fillHelper(exports.formatMoney(value, place || 8), fill); };
};
exports.fromUnitToDecimalBN = function (balance, decimal) {
var amountBN = math_1.toBN(balance || 0);
var decimalBN = math_1.toBN(10).toPower(decimal);
return amountBN.times(decimalBN);
};
exports.fromDecimalToUnit = function (balance, decimal) {
return math_1.toBN(balance).dividedBy(Math.pow(10, decimal));
};
exports.fromUnitToDecimal = function (balance, decimal, base) {
return exports.fromUnitToDecimalBN(balance, decimal).toString(base);
};
//# sourceMappingURL=format.js.map