Java: round to nearest multiple of 5 (either up or down)

北慕城南 提交于 2019-12-28 05:35:07

问题


I need to round a number to nearest multiple of 5 (either up or down). For example, here are the list of numbers and the number next to it that it needs to round up/down to.

12.5  10
62.1  60
68.3  70
74.5  75
80.7  80

Numbers will only be positive.


回答1:


haven't tested it, but 5*(Math.round(f/5)); should work




回答2:


Nearest Multiple of 5 for Upper value

5*(Math.ceil(Math.abs(number/5)));

for Lower Value

5*(Math.floor(Math.abs(number/5)));

it gives Positive value only.




回答3:


public static void main(String args[]) {
    double num = 67.5;
    if (num % 5 == 0)
        System.out.println("OK");
    else if (num % 5 < 2.5)
        num = num - num % 5;
    else
        num = num + (5 - num % 5);
    System.out.println(num);

}

Try this.




回答4:


Gefei's solution is working, but I had to convert explicitly to double like this: 5*(Math.round((double)f/5))




回答5:


How about something like this:

return round((number/5))*5;



回答6:


There are many other solutions on this page, but I believe this is the most concise one.

To find the closest multiple of x for a given number,

let x be the multiple and num be the given number:

// The closest multiple of x <= num
int multipleOfX = x * ( num / x );

In your case:

int multipleOf5 = 5 * ( num / 5 );


来源:https://stackoverflow.com/questions/14196987/java-round-to-nearest-multiple-of-5-either-up-or-down

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!