123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = void 0;
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
- var _numberUtil = require("./numberUtil");
- /**
- * We can remove this when IE not support anymore
- */
- var NumberDecimal = /*#__PURE__*/function () {
- function NumberDecimal(value) {
- (0, _classCallCheck2.default)(this, NumberDecimal);
- (0, _defineProperty2.default)(this, "origin", '');
- (0, _defineProperty2.default)(this, "number", void 0);
- (0, _defineProperty2.default)(this, "empty", void 0);
- if ((0, _numberUtil.isEmpty)(value)) {
- this.empty = true;
- return;
- }
- this.origin = String(value);
- this.number = Number(value);
- }
- (0, _createClass2.default)(NumberDecimal, [{
- key: "negate",
- value: function negate() {
- return new NumberDecimal(-this.toNumber());
- }
- }, {
- key: "add",
- value: function add(value) {
- if (this.isInvalidate()) {
- return new NumberDecimal(value);
- }
- var target = Number(value);
- if (Number.isNaN(target)) {
- return this;
- }
- var number = this.number + target;
- // [Legacy] Back to safe integer
- if (number > Number.MAX_SAFE_INTEGER) {
- return new NumberDecimal(Number.MAX_SAFE_INTEGER);
- }
- if (number < Number.MIN_SAFE_INTEGER) {
- return new NumberDecimal(Number.MIN_SAFE_INTEGER);
- }
- var maxPrecision = Math.max((0, _numberUtil.getNumberPrecision)(this.number), (0, _numberUtil.getNumberPrecision)(target));
- return new NumberDecimal(number.toFixed(maxPrecision));
- }
- }, {
- key: "multi",
- value: function multi(value) {
- var target = Number(value);
- if (this.isInvalidate() || Number.isNaN(target)) {
- return new NumberDecimal(NaN);
- }
- var number = this.number * target;
- // [Legacy] Back to safe integer
- if (number > Number.MAX_SAFE_INTEGER) {
- return new NumberDecimal(Number.MAX_SAFE_INTEGER);
- }
- if (number < Number.MIN_SAFE_INTEGER) {
- return new NumberDecimal(Number.MIN_SAFE_INTEGER);
- }
- var maxPrecision = Math.max((0, _numberUtil.getNumberPrecision)(this.number), (0, _numberUtil.getNumberPrecision)(target));
- return new NumberDecimal(number.toFixed(maxPrecision));
- }
- }, {
- key: "isEmpty",
- value: function isEmpty() {
- return this.empty;
- }
- }, {
- key: "isNaN",
- value: function isNaN() {
- return Number.isNaN(this.number);
- }
- }, {
- key: "isInvalidate",
- value: function isInvalidate() {
- return this.isEmpty() || this.isNaN();
- }
- }, {
- key: "equals",
- value: function equals(target) {
- return this.toNumber() === (target === null || target === void 0 ? void 0 : target.toNumber());
- }
- }, {
- key: "lessEquals",
- value: function lessEquals(target) {
- return this.add(target.negate().toString()).toNumber() <= 0;
- }
- }, {
- key: "toNumber",
- value: function toNumber() {
- return this.number;
- }
- }, {
- key: "toString",
- value: function toString() {
- var safe = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
- if (!safe) {
- return this.origin;
- }
- if (this.isInvalidate()) {
- return '';
- }
- return (0, _numberUtil.num2str)(this.number);
- }
- }]);
- return NumberDecimal;
- }();
- exports.default = NumberDecimal;
|