/** * @Date: 2021-05-10 * @author @小king * @Description:基于bigjs的数值取值方法 */ ;(function(GLOBAL){'use strict';var Big,DP=20,RM=1,MAX_DP=1E6,MAX_POWER=1E6,NE=-7,PE=21,STRICT=false,NAME='[big.js] ',INVALID=NAME+'Invalid ',INVALID_DP=INVALID+'decimal places',INVALID_RM=INVALID+'rounding mode',DIV_BY_ZERO=NAME+'Division by zero',P={},UNDEFINED=void 0,NUMERIC=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function _Big_(){function Big(n){var x=this;if(!(x instanceof Big))return n===UNDEFINED?_Big_():new Big(n);if(n instanceof Big){x.s=n.s;x.e=n.e;x.c=n.c.slice()}else{if(typeof n!=='string'){if(Big.strict===true){throw TypeError(INVALID+'number');}n=n===0&&1/n<0?'-0':String(n)}parse(x,n)}x.constructor=Big}Big.prototype=P;Big.DP=DP;Big.RM=RM;Big.NE=NE;Big.PE=PE;Big.strict=STRICT;return Big}function parse(x,n){var e,i,nl;if(!NUMERIC.test(n)){throw Error(INVALID+'number');}x.s=n.charAt(0)=='-'?(n=n.slice(1),-1):1;if((e=n.indexOf('.'))>-1)n=n.replace('.','');if((i=n.search(/e/i))>0){if(e<0)e=i;e+=+n.slice(i+1);n=n.substring(0,i)}else if(e<0){e=n.length}nl=n.length;for(i=0;i0&&n.charAt(--nl)=='0';);x.e=e-i-1;x.c=[];for(e=0;i<=nl;)x.c[e++]=+n.charAt(i++)}return x}function round(x,sd,rm,more){var xc=x.c;if(rm===UNDEFINED)rm=Big.RM;if(rm!==0&&rm!==1&&rm!==2&&rm!==3){throw Error(INVALID_RM);}if(sd<1){more=rm===3&&(more||!!xc[0])||sd===0&&(rm===1&&xc[0]>=5||rm===2&&(xc[0]>5||xc[0]===5&&(more||xc[1]!==UNDEFINED)));xc.length=1;if(more){x.e=x.e-sd+1;xc[0]=1}else{xc[0]=x.e=0}}else if(sd=5||rm===2&&(xc[sd]>5||xc[sd]===5&&(more||xc[sd+1]!==UNDEFINED||xc[sd-1]&1))||rm===3&&(more||!!xc[0]);xc.length=sd--;if(more){for(;++xc[sd]>9;){xc[sd]=0;if(!sd--){++x.e;xc.unshift(1)}}}for(sd=xc.length;!xc[--sd];)xc.pop()}return x}function stringify(x,doExponential,isNonzero){var e=x.e,s=x.c.join(''),n=s.length;if(doExponential){s=s.charAt(0)+(n>1?'.'+s.slice(1):'')+(e<0?'e':'e+')+e}else if(e<0){for(;++e;)s='0'+s;s='0.'+s}else if(e>0){if(++e>n){for(e-=n;e--;)s+='0'}else if(e1){s=s.charAt(0)+'.'+s.slice(1)}return x.s<0&&isNonzero?'-'+s:s}P.abs=function(){var x=new this.constructor(this);x.s=1;return x};P.cmp=function(y){var isneg,x=this,xc=x.c,yc=(y=new x.constructor(y)).c,i=x.s,j=y.s,k=x.e,l=y.e;if(!xc[0]||!yc[0])return!xc[0]?!yc[0]?0:-j:i;if(i!=j)return i;isneg=i<0;if(k!=l)return k>l^isneg?1:-1;j=(k=xc.length)<(l=yc.length)?k:l;for(i=-1;++iyc[i]^isneg?1:-1}return k==l?0:k>l^isneg?1:-1};P.div=function(y){var x=this,Big=x.constructor,a=x.c,b=(y=new Big(y)).c,k=x.s==y.s?1:-1,dp=Big.DP;if(dp!==~~dp||dp<0||dp>MAX_DP){throw Error(INVALID_DP);}if(!b[0]){throw Error(DIV_BY_ZERO);}if(!a[0]){y.s=k;y.c=[y.e=0];return y}var bl,bt,n,cmp,ri,bz=b.slice(),ai=bl=b.length,al=a.length,r=a.slice(0,bl),rl=r.length,q=y,qc=q.c=[],qi=0,p=dp+(q.e=x.e-y.e)+1;q.s=k;k=p<0?0:p;bz.unshift(0);for(;rl++rl?1:-1}else{for(ri=-1,cmp=0;++rir[ri]?1:-1;break}}}if(cmp<0){for(bt=rl==bl?b:bz;rl;){if(r[--rl]p)round(q,p,Big.RM,r[0]!==UNDEFINED);return q};P.eq=function(y){return this.cmp(y)===0};P.gt=function(y){return this.cmp(y)>0};P.gte=function(y){return this.cmp(y)>-1};P.lt=function(y){return this.cmp(y)<0};P.lte=function(y){return this.cmp(y)<1};P.minus=P.sub=function(y){var i,j,t,xlty,x=this,Big=x.constructor,a=x.s,b=(y=new Big(y)).s;if(a!=b){y.s=-b;return x.plus(y)}var xc=x.c.slice(),xe=x.e,yc=y.c,ye=y.e;if(!xc[0]||!yc[0]){if(yc[0]){y.s=-b}else if(xc[0]){y=new Big(x)}else{y.s=1}return y}if(a=xe-ye){if(xlty=a<0){a=-a;t=xc}else{ye=xe;t=yc}t.reverse();for(b=a;b--;)t.push(0);t.reverse()}else{j=((xlty=xc.length0)for(;b--;)xc[i++]=0;for(b=i;j>a;){if(xc[--j]0){ye=xe;t=yc}else{e=-e;t=xc}t.reverse();for(;e--;)t.push(0);t.reverse()}if(xc.length-yc.length<0){t=yc;yc=xc;xc=t}e=yc.length;for(k=0;e;xc[e]%=10)k=(xc[--e]=xc[e]+yc[e]+k)/10|0;if(k){xc.unshift(k);++ye}for(e=xc.length;xc[--e]===0;)xc.pop();y.c=xc;y.e=ye;return y};P.pow=function(n){var x=this,one=new x.constructor('1'),y=one,isneg=n<0;if(n!==~~n||n<-MAX_POWER||n>MAX_POWER){throw Error(INVALID+'exponent');}if(isneg)n=-n;for(;;){if(n&1)y=y.times(x);n>>=1;if(!n)break;x=x.times(x)}return isneg?one.div(y):y};P.prec=function(sd,rm){if(sd!==~~sd||sd<1||sd>MAX_DP){throw Error(INVALID+'precision');}return round(new this.constructor(this),sd,rm)};P.round=function(dp,rm){if(dp===UNDEFINED)dp=0;else if(dp!==~~dp||dp<-MAX_DP||dp>MAX_DP){throw Error(INVALID_DP);}return round(new this.constructor(this),dp+this.e+1,rm)};P.sqrt=function(){var r,c,t,x=this,Big=x.constructor,s=x.s,e=x.e,half=new Big('0.5');if(!x.c[0])return new Big(x);if(s<0){throw Error(NAME+'No square root');}s=Math.sqrt(x+'');if(s===0||s===1/0){c=x.c.join('');if(!(c.length+e&1))c+='0';s=Math.sqrt(c);e=((e+1)/2|0)-(e<0||e&1);r=new Big((s==1/0?'5e':(s=s.toExponential()).slice(0,s.indexOf('e')+1))+e)}else{r=new Big(s+'')}e=r.e+(Big.DP+=4);do{t=r;r=half.times(t.plus(x.div(t)))}while(t.c.slice(0,e).join('')!==r.c.slice(0,e).join(''));return round(r,(Big.DP-=4)+r.e+1,Big.RM)};P.times=P.mul=function(y){var c,x=this,Big=x.constructor,xc=x.c,yc=(y=new Big(y)).c,a=xc.length,b=yc.length,i=x.e,j=y.e;y.s=x.s==y.s?1:-1;if(!xc[0]||!yc[0]){y.c=[y.e=0];return y}y.e=i+j;if(ai;){b=c[j]+yc[i]*xc[j-i-1]+b;c[j--]=b%10;b=b/10|0}c[j]=b}if(b)++y.e;else c.shift();for(i=c.length;!c[--i];)c.pop();y.c=c;return y};P.toExponential=function(dp,rm){var x=this,n=x.c[0];if(dp!==UNDEFINED){if(dp!==~~dp||dp<0||dp>MAX_DP){throw Error(INVALID_DP);}x=round(new x.constructor(x),++dp,rm);for(;x.c.lengthMAX_DP){throw Error(INVALID_DP);}x=round(new x.constructor(x),dp+x.e+1,rm);for(dp=dp+x.e+1;x.c.length=Big.PE,!!x.c[0])};P.toNumber=function(){var n=Number(stringify(this,true,true));if(this.constructor.strict===true&&!this.eq(n.toString())){throw Error(NAME+'Imprecise conversion');}return n};P.toPrecision=function(sd,rm){var x=this,Big=x.constructor,n=x.c[0];if(sd!==UNDEFINED){if(sd!==~~sd||sd<1||sd>MAX_DP){throw Error(INVALID+'precision');}x=round(new Big(x),sd,rm);for(;x.c.length=Big.PE,!!n)};P.valueOf=function(){var x=this,Big=x.constructor;if(Big.strict===true){throw Error(NAME+'valueOf disallowed');}return stringify(x,x.e<=Big.NE||x.e>=Big.PE,true)};Big=_Big_();Big['default']=Big.Big=Big;if(typeof define==='function'&&define.amd){define(function(){return Big})}else if(typeof module!=='undefined'&&module.exports){module.exports=Big}else{GLOBAL.Big=Big}})(this);