init
This commit is contained in:
@@ -0,0 +1,351 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user