1
|
{"version":3,"sources":["../../../src/php/math/round.js"],"names":["module","exports","round","value","precision","mode","m","f","isHalf","sgn","Math","pow","floor"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,KAAT,CAAgBC,KAAhB,EAAuBC,SAAvB,EAAkCC,IAAlC,EAAwC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAIC,CAAJ,EAAOC,CAAP,EAAUC,MAAV,EAAkBC,GAAlB,CA3BuD,CA2BjC;AACtB;AACAL,eAAa,CAAb;AACAE,MAAII,KAAKC,GAAL,CAAS,EAAT,EAAaP,SAAb,CAAJ;AACAD,WAASG,CAAT;AACA;AACAG,QAAON,QAAQ,CAAT,GAAc,EAAEA,QAAQ,CAAV,CAApB;AACAK,WAASL,QAAQ,CAAR,KAAc,MAAMM,GAA7B;AACAF,MAAIG,KAAKE,KAAL,CAAWT,KAAX,CAAJ;;AAEA,MAAIK,MAAJ,EAAY;AACV,YAAQH,IAAR;AACE,WAAK,qBAAL;AACA;AACEF,gBAAQI,KAAKE,MAAM,CAAX,CAAR;AACA;AACF,WAAK,qBAAL;AACA;AACEN,gBAAQI,IAAKA,IAAI,CAAJ,GAAQE,GAArB;AACA;AACF,WAAK,oBAAL;AACA;AACEN,gBAAQI,IAAI,EAAEA,IAAI,CAAN,CAAZ;AACA;AACF;AACA;AACEJ,gBAAQI,KAAKE,MAAM,CAAX,CAAR;AAfJ;AAiBD;;AAED,SAAO,CAACD,SAASL,KAAT,GAAiBO,KAAKR,KAAL,CAAWC,KAAX,CAAlB,IAAuCG,CAA9C;AACD,CA1DD","file":"round.js","sourcesContent":["module.exports = function round (value, precision, mode) {\n // discuss at: http://locutus.io/php/round/\n // original by: Philip Peterson\n // revised by: Onno Marsman (https://twitter.com/onnomarsman)\n // revised by: T.Wild\n // revised by: Rafał Kukawski (http://blog.kukawski.pl)\n // input by: Greenseed\n // input by: meo\n // input by: William\n // input by: Josep Sanz (http://www.ws3.es/)\n // bugfixed by: Brett Zamir (http://brett-zamir.me)\n // note 1: Great work. Ideas for improvement:\n // note 1: - code more compliant with developer guidelines\n // note 1: - for implementing PHP constant arguments look at\n // note 1: the pathinfo() function, it offers the greatest\n // note 1: flexibility & compatibility possible\n // example 1: round(1241757, -3)\n // returns 1: 1242000\n // example 2: round(3.6)\n // returns 2: 4\n // example 3: round(2.835, 2)\n // returns 3: 2.84\n // example 4: round(1.1749999999999, 2)\n // returns 4: 1.17\n // example 5: round(58551.799999999996, 2)\n // returns 5: 58551.8\n\n var m, f, isHalf, sgn // helper variables\n // making sure precision is integer\n precision |= 0\n m = Math.pow(10, precision)\n value *= m\n // sign of the number\n sgn = (value > 0) | -(value < 0)\n isHalf = value % 1 === 0.5 * sgn\n f = Math.floor(value)\n\n if (isHalf) {\n switch (mode) {\n case 'PHP_ROUND_HALF_DOWN':\n // rounds .5 toward zero\n value = f + (sgn < 0)\n break\n case 'PHP_ROUND_HALF_EVEN':\n // rouds .5 towards the next even integer\n value = f + (f % 2 * sgn)\n break\n case 'PHP_ROUND_HALF_ODD':\n // rounds .5 towards the next odd integer\n value = f + !(f % 2)\n break\n default:\n // rounds .5 away from zero\n value = f + (sgn > 0)\n }\n }\n\n return (isHalf ? value : Math.round(value)) / m\n}\n"]}
|