Files
tothvillar e896e2ead4 init
2026-07-09 15:04:14 +08:00

351 lines
7.3 KiB
JavaScript

function i(e) {
this.arr = [];
this.len = 0;
undefined == e && (e = "0");
this.base = e;
this.init();
}
i.prototype.init = function () {
var e = this.base.slice(-1);
if (e.charCodeAt() > 57) {
var o = {
K: 3,
M: 6,
B: 9,
T: 12,
P: 15,
E: 18,
Z: 21,
Y: 24,
N: 27,
D: 30,
S: 33,
U: 36,
Q: 39
}[e];
var t = this.base.slice(0, this.base.length - 1).split(".");
for (var i = 0; i < o - 1; i++) {
this.arr.push(0);
}
if (t.length > 1) {
var n = parseInt(t[1]);
n = Math.floor(n / Math.pow(10, t[1].length - 1));
this.arr.push(n);
} else {
this.arr.push(0);
}
var a = t[0].split("");
for (var c = a.length - 1; c >= 0; c--) {
this.arr.push(parseInt(a[c]));
}
} else {
var s = this.base.split("");
for (var l = s.length - 1; l >= 0; l--) {
this.arr.push(parseInt(s[l]));
}
}
this.len = this.arr.length;
this.base = this.getShortString();
};
i.prototype.alterationBase = function () {
var e = arguments.length > 0 && undefined !== arguments[0] ? arguments[0] : "0";
this.arr = [];
this.len = 0;
this.base = e;
this.init();
};
i.prototype.plus = function (e) {
var o = [];
var t = Math.max(e.len, this.len);
var i = false;
for (var n = 0; n < t; n++) {
if (undefined !== e.arr[n] && undefined !== this.arr[n]) {
var a = e.arr[n] + this.arr[n];
if (i) {
a += 1;
i = false;
}
if (a >= 10) {
i = true;
o[n] = a % 10;
} else {
o[n] = a;
}
} else {
var c = undefined !== e.arr[n] ? e.arr[n] : this.arr[n];
if (i) {
c += 1;
i = false;
}
if (c >= 10) {
i = true;
o[n] = c % 10;
} else {
o[n] = c % 10;
}
}
}
i && o.push(1);
this.arr = o;
this.len = this.arr.length;
this.base = this.getShortString();
};
i.prototype.minus = function (e) {
var o = [];
if (e.len > this.len || e.len == this.len && this.arr[this.len - 1] < e.arr[this.len - 1]) {
o.push(0);
} else {
var t = 0;
var i = this.len;
var n = 0;
for (var a = 0; a < i && (n = this.arr[a], n -= t, a < e.len && (n -= e.arr[a]), n < 0 ? (t = 1, n += 10) : t = 0, !(n < 0)); a++) {
o.push(n);
}
0 != t && (o = [0]);
}
a = this.len = o.length;
for (var c = -1; a-- && 0 == o[a];) {
c = Math.max(1, a);
}
c >= 0 && o.splice(c, this.len - c);
this.arr = o;
this.len = this.arr.length;
return this.base = this.getShortString();
};
i.prototype.mult = function (e) {
var o = [];
var t = 0;
var i = e + "";
var n = Math.max(this.len, i.length);
for (var a = 0; a <= n && (undefined != this.arr[a] || 0 != t); a++) {
var c = 0;
undefined !== this.arr[a] && (c = this.arr[a] * e);
if (t > 0) {
c += t;
t = 0;
}
c > 9 && (t = Math.floor(c / 10));
c %= 10;
o[a] = c;
}
if (t > 0) {
if (t > 9) {
var s = Math.floor(t / 10);
t %= 10;
o.push(t);
o.push(s);
} else {
o.push(t);
}
}
"10" == this.arr[0] || this.arr[1];
this.arr = o;
this.len = this.arr.length;
this.getShortString();
return this;
};
i.prototype.mult2 = function (e) {
var o = (e += "").split("");
var t = 0;
var n = new i();
for (var a = o.length - 1; a >= 0; a--) {
var c = new i().copy(this);
c.mult(parseInt(e.charAt(a)));
c.mult10(t);
t++;
n.plus(c);
}
this.copy(n);
return this;
};
i.prototype.mult10 = function (e) {
for (undefined === e && (e = 1); e--;) {
this.arr.unshift(0);
}
this.len = this.arr.length;
return this;
};
i.prototype.div = function (e) {
var o = false;
var t = [];
var i = 0;
var n = 0;
var a = this.len;
for (var c = 0; a--;) {
c = 10 * i + this.arr[a];
n = Math.floor(c / e);
if (o || n > 0) {
t.push(n);
o = true;
}
i = c % e;
}
this.len = t.length;
if (0 == this.len) {
this.arr = [1];
this.len = 1;
} else {
this.arr = t;
this.arr.reverse();
}
"10" == this.arr[0] || this.arr[1];
this.getShortString();
return this;
};
i.prototype.getShortString = function () {
var e = 0;
var o = 0;
var t = "";
var i = 0;
if (1 == (e = this.len) && 0 == this.arr[0]) {
return "0";
}
o = e % 3;
i = Math.floor(e / 3);
if (0 == o) {
o = 3;
i--;
}
for (o = e - o; e-- > o;) {
t += this.arr[e];
}
i > 0 && this.arr[e] > 0 && (t += "." + this.arr[e]);
return t + ["", "K", "M", "B", "T", "P", "E", "Z", "Y", "N", "D", "S", "U", "Q"][i];
};
i.prototype.getAnyNumStr = function () {
var e = "";
for (var o = this.len - 1; o >= 0; o--) {
e += this.arr[o];
}
return e;
};
i.prototype.bigger = function (e) {
if (this.len > e.len) {
return true;
}
if (this.len < e.len) {
return false;
}
for (var o = this.len; o--;) {
if (this.arr[o] > e.arr[o]) {
return true;
}
if (this.arr[o] < e.arr[o]) {
return false;
}
}
return false;
};
i.prototype.biggerIncludeEqual = function (e) {
if (this.len > e.len) {
return true;
}
if (this.len < e.len) {
return false;
}
for (var o = this.len; o--;) {
if (this.arr[o] > e.arr[o]) {
return true;
}
if (this.arr[o] < e.arr[o]) {
return false;
}
}
return true;
};
i.prototype.bigger2 = function (e) {
if (this.len > e.len) {
return true;
}
if (this.len < e.len) {
return false;
}
for (var o = this.len; o--;) {
if (this.arr[o] > e.arr[o]) {
return true;
}
if (this.arr[o] < e.arr[o]) {
return false;
}
}
return true;
};
i.prototype.copy = function (e) {
this.arr = e.arr.concat();
this.len = e.len;
this.base = e.base;
this.getShortString();
return this;
};
i.prototype.zero = function (e) {
this.arr = [];
this.len = 0;
this.base = "0";
};
i.prototype.isZero = function (e) {
return !(0 != this.len && 1 != this.len || 0 != this.arr.length && 0 != this.arr[0]);
};
i.prototype.isOne = function (e) {
return 1 != this.len || 1 != this.arr[0];
};
i.prototype.noZero = function () {
if (this.isZero()) {
this.arr = [1];
this.len = 1;
this.base = "1";
}
};
i.prototype.div10 = function (e) {
undefined == e && (e = 1);
for (; e > 0; e--) {
this.arr.shift();
}
this.len = this.arr.length;
this.len <= 0 && this.zero();
this.getShortString();
return this;
};
i.prototype.divPresent = function (e) {
var o = this.len - e.len;
if (o >= 3) {
return 0;
}
if (o < -3) {
return 10;
}
var t = Math.max(this.len, e.len);
var i = "";
var n = "";
for (o = Math.min(3, t); o--;) {
--t < this.len && (i += this.arr[t]);
t < e.len && (n += e.arr[t]);
}
this.getShortString();
return parseFloat(n) / parseFloat(i);
};
i.prototype.present100 = function (e) {
if (0 == e) {
return this;
} else {
if (e <= 1e3) {
return this.mult(e).div10(2);
} else {
if (e <= 1e4) {
return e = Math.floor(e / 10), this.mult(e).div10(1);
} else {
if (e <= 1e5) {
return e = Math.floor(e / 100), this.mult(e);
} else {
return this.mult(e).div10(2);
}
}
}
}
};
i.prototype.getDetails = function () {
return {
display: this.getShortString(),
real: this.getAnyNumStr()
};
};
module.exports = i;