问题
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