summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/math/round.js.map
blob: d5abf1714016e677feb191b4a3b38a8ce3c85579 (plain) (blame)
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"]}