Advertisement
Guest User

jimRound

a guest
Nov 22nd, 2017
80
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[float], 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(10.11, 555.555) = 555.56
  20. // jimRound(1000.11, 555.55) = 555.55
  21. // jimRound(1000.11, 555.544) = 555.54
  22. // jimRound(1000.11, 555.551) = 555.55
  23. // jimRound(1000.1111, 555.55) = 555.5500
  24. // jimRound(1000.1111, 555.559999) = 555.5600
  25. // jimRound(1000, 555.55) = 1000
  26. // jimRound(10000, 555.55) = 0
  27. // jimRound(10001, 555.55) = 556
  28.  
  29.  
  30. var jimRound = function(pattern, propval)
  31. {
  32.     var dSplit = pattern.toString().split(".");
  33.     var wNum = dSplit[0];
  34.     var w = dSplit[0].toString().split("");
  35.  
  36.     if (typeof dSplit[1] === 'undefined')
  37.     {
  38.         var d = new Array();
  39.     }
  40.     else
  41.     {
  42.         var d = dSplit[1].toString().split("");
  43.  
  44.     }
  45.     var wRound = 0;
  46.     var foundPrec_N = false;
  47.     for (var i = w.length - 1; i > -1; i--)
  48.     {
  49.         if ((w[i] == '0') && (!foundPrec_N))
  50.         {
  51.             wRound++;
  52.         }
  53.         else
  54.         {
  55.             foundPrec_N = true;
  56.         }
  57.     }
  58.  
  59.     var wAll = w.length;
  60.  
  61.     if (d.length > 0)
  62.     {
  63.         var wSigs = wAll;
  64.     }
  65.     else
  66.     {
  67.         var wSigs = wAll - wRound;
  68.     }
  69.  
  70.     var dPrec = d.length;
  71.  
  72.     if (d.length > 0)
  73.     {
  74.         var propvalArray = propval.toString().split(".");
  75.         if (typeof propvalArray[1] === 'undefined')
  76.         {
  77.             var pPrec = "0";
  78.         }
  79.         else
  80.         {
  81.             var pPrec = propvalArray[1].length;
  82.             var propDec = propvalArray[1];
  83.         }
  84.         var trailZeros = 0;
  85.         var foundNonZero = false;
  86.         var trailZeroString = '';
  87.  
  88.         var propDecArray = propDec.split("");
  89.         for (var z = 0; z < propDecArray.length; z++)
  90.         {
  91.  
  92.             if ((propDecArray[z] == '0') && (!foundNonZero))
  93.             {
  94.  
  95.                 trailZeros++;
  96.                 trailZeroString += '0';
  97.             }
  98.             else
  99.             {
  100.                 foundNonZero = true;
  101.             }
  102.         }
  103.         var roundDecLength = propDecArray.length - trailZeros;
  104.         var trimmedDec = propDec.substr(trailZeros, roundDecLength);
  105.         var numTemplateDecs = d.length;
  106.  
  107.         var decCorrect = Math.pow(10, propDecArray.length - numTemplateDecs)
  108.  
  109.         if (pPrec >= dPrec)
  110.         {
  111.             var reduce = Math.pow(10, (pPrec - dPrec));
  112.             var reducedValue = parseFloat(propDec) / reduce;
  113.             var roundDec = Math.round(reducedValue);
  114.             var roundDecString = '.' + roundDec;
  115.         }
  116.         else
  117.         {
  118.             var extraZeros = dPrec - pPrec;
  119.             var extraZeroString = '';
  120.             for (var e = 0; e < extraZeros; e++)
  121.             {
  122.                 extraZeroString += '0';
  123.             }
  124.  
  125.             var roundDecString = '.' + propDec + extraZeroString.toString();
  126.  
  127.         }
  128.  
  129.         if (trailZeroString == '')
  130.         {
  131.  
  132.             var output = propvalArray[0] + roundDecString;
  133.  
  134.         }
  135.         else
  136.         {
  137.  
  138.             if (d.length > 1)
  139.             {
  140.                 var output = propvalArray[0] + '.' + trailZeroString.toString() + roundDec;
  141.             }
  142.             else
  143.             {
  144.                 var output = propvalArray[0] + '.' + roundDec;
  145.             }
  146.         }
  147.  
  148.     }
  149.     else
  150.     {
  151.         var DigitRound = wAll - wSigs;
  152.         var totalDivide = Math.pow(10, DigitRound);
  153.         var output = Math.round(propval / totalDivide) * Math.pow(10, (wAll - wSigs));
  154.     }
  155.     return (output);
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement