UNPKG

tokenlon-sdk

Version:

imToken Tokenlon API for node

64 lines 2.39 kB
"use strict"; 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