initial commit
This commit is contained in:
55
assets/js/round/round.js
Normal file
55
assets/js/round/round.js
Normal file
@ -0,0 +1,55 @@
|
||||
function round (value, precision, mode) {
|
||||
// http://kevin.vanzonneveld.net
|
||||
// + original by: Philip Peterson
|
||||
// + revised by: Onno Marsman
|
||||
// + input by: Greenseed
|
||||
// + revised by: T.Wild
|
||||
// + input by: meo
|
||||
// + input by: William
|
||||
// + bugfixed by: Brett Zamir (http://brett-zamir.me)
|
||||
// + input by: Josep Sanz (http://www.ws3.es/)
|
||||
// + revised by: Rafał Kukawski (http://blog.kukawski.pl/)
|
||||
// % note 1: Great work. Ideas for improvement:
|
||||
// % note 1: - code more compliant with developer guidelines
|
||||
// % note 1: - for implementing PHP constant arguments look at
|
||||
// % note 1: the pathinfo() function, it offers the greatest
|
||||
// % note 1: flexibility & compatibility possible
|
||||
// * example 1: round(1241757, -3);
|
||||
// * returns 1: 1242000
|
||||
// * example 2: round(3.6);
|
||||
// * returns 2: 4
|
||||
// * example 3: round(2.835, 2);
|
||||
// * returns 3: 2.84
|
||||
// * example 4: round(1.1749999999999, 2);
|
||||
// * returns 4: 1.17
|
||||
// * example 5: round(58551.799999999996, 2);
|
||||
// * returns 5: 58551.8
|
||||
var m, f, isHalf, sgn; // helper variables
|
||||
precision |= 0; // making sure precision is integer
|
||||
m = Math.pow(10, precision);
|
||||
value *= m;
|
||||
sgn = (value > 0) | -(value < 0); // sign of the number
|
||||
isHalf = value % 1 === 0.5 * sgn;
|
||||
f = Math.floor(value);
|
||||
|
||||
if (isHalf) {
|
||||
switch (mode) {
|
||||
case '2':
|
||||
case 'PHP_ROUND_HALF_DOWN':
|
||||
value = f + (sgn < 0); // rounds .5 toward zero
|
||||
break;
|
||||
case '3':
|
||||
case 'PHP_ROUND_HALF_EVEN':
|
||||
value = f + (f % 2 * sgn); // rouds .5 towards the next even integer
|
||||
break;
|
||||
case '4':
|
||||
case 'PHP_ROUND_HALF_ODD':
|
||||
value = f + !(f % 2); // rounds .5 towards the next odd integer
|
||||
break;
|
||||
default:
|
||||
value = f + (sgn > 0); // rounds .5 away from zero
|
||||
}
|
||||
}
|
||||
|
||||
return (isHalf ? value : Math.round(value)) / m;
|
||||
}
|
1
assets/js/round/round.min.js
vendored
Normal file
1
assets/js/round/round.min.js
vendored
Normal file
@ -0,0 +1 @@
|
||||
function round(a,e,r){var _,c,s;if(e|=0,c=(a*=_=Math.pow(10,e))%1==.5*(s=0<a|-(a<0)),e=Math.floor(a),c)switch(r){case"2":case"PHP_ROUND_HALF_DOWN":a=e+(s<0);break;case"3":case"PHP_ROUND_HALF_EVEN":a=e+e%2*s;break;case"4":case"PHP_ROUND_HALF_ODD":a=e+!(e%2);break;default:a=e+(0<s)}return(c?a:Math.round(a))/_}
|
Reference in New Issue
Block a user