UNPKG

calculate-asmd

Version:

The precise addition, subtraction, multiplication and division of JavaScript avoids the error of floating point calculation

2 lines (1 loc) 2.16 kB
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t=t||self).CalculateAsmd={})}(this,function(t){"use strict";var e=function(){var t=+(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0),e=+(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0);if(isNaN(t)||isNaN(e))return NaN;if(0===t||0===e)return t;var a=t,r=1;0>t&&(a=Math.abs(t),r=-1);var i=(""+a).split("."),n=i[0].length;if(e>0)for(var l=e-(i[1]?i[1].length:0);l>0;)l-=1,i.push(0);else for(var s=Math.abs(e)-n;s>0;)s-=1,i.unshift(0);var h=n+e;return(i=i.join("").split("")).splice(h>0?h:0,0,"."),0>r&&i.unshift("-"),parseFloat(i.join(""))};t.add=function(){var t=+(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0),a=+(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0);if(isNaN(t)||isNaN(a))return NaN;var r,i=0,n=0;try{i=(""+t).split(".")[1].length}catch(t){i=0}try{n=(""+a).split(".")[1].length}catch(t){n=0}var l=e(t,r=Math.max(i,n)),s=e(a,r);return e(l+s,-r)},t.div=function(){var t=+(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0),a=+(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0);if(isNaN(t)||isNaN(a))return NaN;var r=+(""+t).replace(".",""),i=+(""+a).replace(".",""),n=0,l=0;try{n=+(""+t).split(".")[1].length}catch(t){n=0}try{l=+(""+a).split(".")[1].length}catch(t){l=0}return e(r/i,l-n)},t.mul=function(){var t=+(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0),a=+(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0);if(isNaN(t)||isNaN(a))return NaN;var r=+(""+t).replace(".",""),i=+(""+a).replace(".",""),n=0;try{n+=(""+t).split(".")[1].length}catch(t){n+=0}try{n+=(""+a).split(".")[1].length}catch(t){n+=0}return e(r*i,-n)},t.scaleNum=e,t.sub=function(){var t=+(arguments.length>0&&void 0!==arguments[0]?arguments[0]:0),a=+(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0);if(isNaN(t)||isNaN(a))return NaN;var r,i=0,n=0;try{i=(""+t).split(".")[1].length}catch(t){i=0}try{n=(""+a).split(".")[1].length}catch(t){n=0}var l=e(t,r=Math.max(i,n)),s=e(a,r);return e(l-s,-r)},Object.defineProperty(t,"__esModule",{value:!0})});