round to nearest .25 javascript

后端 未结 8 652
我在风中等你
我在风中等你 2020-12-08 14:07

I want to convert all numbers to the nearest .25

So...

5 becomes 5.00
2.25 becomes 2.25
4 becomes 4.00
3.5 becomes 3.50

Thanks

相关标签:
8条回答
  • 2020-12-08 14:44

    If speed is your concern, note that you can get about a 30% speed improvement by using:

    var nearest = 4;
    var rounded = number + nearest/2 - (number+nearest/2) % nearest;
    

    From my website: http://phrogz.net/round-to-nearest-via-modulus-division
    Performance tests here: http://jsperf.com/round-to-nearest

    0 讨论(0)
  • 2020-12-08 14:45

    Here’s an implementation of what rslite said:

    var number = 5.12345;
    number = (Math.round(number * 4) / 4).toFixed(2);
    
    0 讨论(0)
  • 2020-12-08 14:45

    Multiply by 4, round to integer, divide by 4 and format with two decimals.

    Edit Any reason for the downvotes? At least leave a comment to know what should be improved.

    0 讨论(0)
  • 2020-12-08 14:46

    Use below function, hope it helps

    function roundByQuarter(value) {
        var inv = 1.0 / 0.25;
        return Math.round(value * inv) / inv;
    }
    

    Call the function as below, will result the nearest Quarter value, that is it will not return .32, .89, .56 but will return .25, .75, .50 decimals only.

    roundByQuarter(2.74) = 2.75
    
    roundByQuarter(2.34) = 2.25
    
    roundByQuarter(2.94) = 3.00
    
    roundByQuarter(2.24) = 2.25
    
    0 讨论(0)
  • 2020-12-08 14:54

    A very good approximation for rounding:

    function Rounding (number, precision){
    
      var newNumber;
      var sNumber = number.toString();
    
      var increase = precision + sNumber.length - sNumber.indexOf('.') + 1;
    
      if (number < 0)
        newNumber = (number -  5 * Math.pow(10,-increase));
      else
      newNumber = (number +  5 * Math.pow(10,-increase));
    
      var multiple = Math.pow(10,precision);
      return Math.round(newNumber * multiple)/multiple;
    }
    
    0 讨论(0)
  • 2020-12-08 14:55

    Here is @Gumbo's answer in a form of a function:

    var roundNearQtr = function(number) {
      return (Math.round(number * 4) / 4).toFixed(2);
    };
    

    You can now make calls:

    roundNearQtr(5.12345); // 5.00
    roundNearQtr(3.23); // 3.25
    roundNearQtr(3.13); // 3.25
    roundNearQtr(3.1247); // 3.00
    
    0 讨论(0)
提交回复
热议问题