Rounding up a number to nearest multiple of 5

后端 未结 21 1895
感动是毒
感动是毒 2020-11-27 15:24

Does anyone know how to round up a number to its nearest multiple of 5? I found an algorithm to round it to the nearest multiple of 10 but I can\'t find this one.

T

相关标签:
21条回答
  • 2020-11-27 16:20

    Another Method or logic to rounding up a number to nearest multiple of 5

    double num = 18.0;
        if (num % 5 == 0)
            System.out.println("No need to roundoff");
        else if (num % 5 < 2.5)
            num = num - num % 5;
        else
            num = num + (5 - num % 5);
        System.out.println("Rounding up to nearest 5------" + num);
    

    output :

    Rounding up to nearest 5------20.0
    
    0 讨论(0)
  • 2020-11-27 16:21

    Just pass your number to this function as a double, it will return you rounding the decimal value up to the nearest value of 5;

    if 4.25, Output 4.25

    if 4.20, Output 4.20

    if 4.24, Output 4.20

    if 4.26, Output 4.30

    if you want to round upto 2 decimal places,then use

    DecimalFormat df = new DecimalFormat("#.##");
    roundToMultipleOfFive(Double.valueOf(df.format(number)));
    

    if up to 3 places, new DecimalFormat("#.###")

    if up to n places, new DecimalFormat("#.nTimes #")

     public double roundToMultipleOfFive(double x)
                {
    
                    x=input.nextDouble();
                    String str=String.valueOf(x);
                    int pos=0;
                    for(int i=0;i<str.length();i++)
                    {
                        if(str.charAt(i)=='.')
                        {
                            pos=i;
                            break;
                        }
                    }
    
                    int after=Integer.parseInt(str.substring(pos+1,str.length()));
                    int Q=after/5;
                    int R =after%5;
    
                    if((Q%2)==0)
                    {
                        after=after-R;
                    }
                    else
                    {
                        after=after+(5-R);
                    }
    
                           return Double.parseDouble(str.substring(0,pos+1).concat(String.valueOf(after))));
    
                }
    
    0 讨论(0)
  • 2020-11-27 16:22
    int getNextMultiple(int num , int multipleOf) {
        int nextDiff = multipleOf - (num % multipleOf);
        int total = num + nextDiff;
        return total;
    }
    
    0 讨论(0)
  • 2020-11-27 16:23

    I think I have it, thanks to Amir

    double round( double num, int multipleOf) {
      return Math.floor((num + multipleOf/2) / multipleOf) * multipleOf;
    }
    

    Here's the code I ran

    class Round {
        public static void main(String[] args){
            System.out.println("3.5 round to 5: " + Round.round(3.5, 5));
            System.out.println("12 round to 6: " + Round.round(12, 6));
            System.out.println("11 round to 7: "+ Round.round(11, 7));
            System.out.println("5 round to 2: " + Round.round(5, 2));
            System.out.println("6.2 round to 2: " + Round.round(6.2, 2));
        }
    
        public static double round(double num, int multipleOf) {
            return Math.floor((num +  (double)multipleOf / 2) / multipleOf) * multipleOf;
        }
    }
    

    And here's the output

    3.5 round to 5: 5.0
    12 round to 6: 12.0
    11 round to 7: 14.0
    5 round to 2: 6.0
    6.2 round to 2: 6.0
    
    0 讨论(0)
  • 2020-11-27 16:24
    int roundUp(int num) {
        return ((num / 5) + (num % 5 > 0 ? 1 : 0)) * 5;
    }
    
    0 讨论(0)
  • 2020-11-27 16:25
     int roundToNearestMultiple(int num, int multipleOf){
            int floorNearest = ((int) Math.floor(num * 1.0/multipleOf)) * multipleOf;
            int ceilNearest = ((int) Math.ceil(num  * 1.0/multipleOf)) * multipleOf;
            int floorNearestDiff = Math.abs(floorNearest - num);
            int ceilNearestDiff = Math.abs(ceilNearest - num);
            if(floorNearestDiff <= ceilNearestDiff) {
                return floorNearest;
            } else {
                return ceilNearest;
            } 
        }
    
    0 讨论(0)
提交回复
热议问题