Advertisement
Guest User

jimRound

a guest
Nov 22nd, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //
  2. // ------------MYSQL-STYLE FLOATING POINT CONVERTER-------
  3. // Jim Reilly
  4. // Use to convert a floating point value to the precision of another floating point value
  5. //
  6. // Usage: var ouput = jimRound(pattern[string], propval[float])
  7. // return: float
  8. //
  9. // Examples
  10. // ------------------------
  11. //
  12. // jimRound(1, 555.55) = 556
  13. // jimRound(11, 555.55) = 556
  14. // jimRound(111, 555.55) = 556
  15. // jimRound(10, 555.55) = 560
  16. // jimRound(10., 555.55) = 560
  17. // jimRound(10.1, 555.55) = 555.6
  18. // jimRound(10.11, 555.55) = 555.55
  19. // jimRound(1000.11, 555.55) = 555.55
  20. // jimRound(1000.1111, 555.55) = 555.5500
  21. // jimRound(1000, 555.55) = 1000
  22. // jimRound(10000, 555.55) = 0
  23. // jimRound(10001, 555.55) = 556
  24.  
  25.  
  26. var jimRound = function(pattern, propval)
  27. {
  28.     var dSplit = pattern.toString().split(".");
  29.     var wNum = dSplit[0];
  30.     var w = dSplit[0].toString().split("");
  31.  
  32.     if (typeof dSplit[1] === 'undefined')
  33.     {
  34.         var d = new Array();
  35.     }
  36.     else
  37.     {
  38.         var d = dSplit[1].toString().split("");
  39.  
  40.     }
  41.     var wRound = 0;
  42.     var foundPrec_N = false;
  43.     for (var i = w.length - 1; i > -1; i--)
  44.     {
  45.         if ((w[i] == '0') && (!foundPrec_N))
  46.         {
  47.             wRound++;
  48.         }
  49.         else
  50.         {
  51.             foundPrec_N = true;
  52.         }
  53.     }
  54.  
  55.     var wAll = w.length;
  56.  
  57.     if (d.length > 0)
  58.     {
  59.         var wSigs = wAll;
  60.     }
  61.     else
  62.     {
  63.         var wSigs = wAll - wRound;
  64.     }
  65.  
  66.     var dPrec = d.length;
  67.  
  68.     if (d.length > 0)
  69.     {
  70.         var propvalArray = propval.toString().split(".");
  71.         if (typeof propvalArray[1] === 'undefined')
  72.         {
  73.             var pPrec = "0";
  74.         }
  75.         else
  76.         {
  77.             var pPrec = propvalArray[1].length;
  78.             var propDec = propvalArray[1];
  79.         }
  80.         var trailZeros = 0;
  81.         var foundNonZero = false;
  82.         var trailZeroString = '';
  83.  
  84.         var propDecArray = propDec.split("");
  85.         for (var z = 0; z < propDecArray.length; z++)
  86.         {
  87.  
  88.             if ((propDecArray[z] == '0') && (!foundNonZero))
  89.             {
  90.  
  91.                 trailZeros++;
  92.                 trailZeroString += '0';
  93.             }
  94.             else
  95.             {
  96.                 foundNonZero = true;
  97.             }
  98.         }
  99.         var roundDecLength = propDecArray.length - trailZeros;
  100.         var trimmedDec = propDec.substr(trailZeros, roundDecLength);
  101.         var numTemplateDecs = d.length;
  102.  
  103.         var decCorrect = Math.pow(10, propDecArray.length - numTemplateDecs)
  104.  
  105.         if (pPrec >= dPrec)
  106.         {
  107.             var reduce = Math.pow(10, (pPrec - dPrec));
  108.             var reducedValue = parseFloat(propDec) / reduce;
  109.             var roundDec = Math.round(reducedValue);
  110.             var roundDecString = '.' + roundDec;
  111.         }
  112.         else
  113.         {
  114.             var extraZeros = dPrec - pPrec;
  115.             var extraZeroString = '';
  116.             for (var e = 0; e < extraZeros; e++)
  117.             {
  118.                 extraZeroString += '0';
  119.             }
  120.  
  121.             var roundDecString = '.' + propDec + extraZeroString.toString();
  122.  
  123.         }
  124.  
  125.         if (trailZeroString == '')
  126.         {
  127.  
  128.             var output = propvalArray[0] + roundDecString;
  129.  
  130.         }
  131.         else
  132.         {
  133.  
  134.             if (d.length > 1)
  135.             {
  136.                 var output = propvalArray[0] + '.' + trailZeroString.toString() + roundDec;
  137.             }
  138.             else
  139.             {
  140.                 var output = propvalArray[0] + '.' + roundDec;
  141.             }
  142.         }
  143.  
  144.     }
  145.     else
  146.     {
  147.         var DigitRound = wAll - wSigs;
  148.         var totalDivide = Math.pow(10, DigitRound);
  149.         var output = Math.round(propval / totalDivide) * Math.pow(10, (wAll - wSigs));
  150.     }
  151.     return (output);
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement