Reputation: 2549
I'd like to round integers down to their nearest 1000 in Java.
So for example:
Upvotes: 22
Views: 40381
Reputation: 15507
int i = Math.floorDiv(-13623, 1000) * 1000
//i => -14000
The above code will always round down (towards negative infinity) assuming the divisor (1000 in the example) is positive.
The other answer (i = i/1000 * 1000
) rounds down when i
is positive, but up when i
is negative.
-13623 / 1000 * 1000 == -13000
There is also a version of Math.floorDiv
for long
s which will work for very large numbers where the Math.floor
method might fail due to the precision of double
.
There are also Math.floorMod
methods to go with the floorDiv
s which might allow you to shorten it a bit:
int i = -13623;
i -= Math.floorMod(i, 1000);
//i => -14000
Upvotes: 1
Reputation: 2425
You could divide the number by 1000, apply Math.floor
, multiply by 1000 and cast back to integer.
Upvotes: 12
Reputation: 72828
Simply divide by 1000 to lose the digits that are not interesting to you, and multiply by 1000:
i = i/1000 * 1000
Or, you can also try:
i = i - (i % 1000)
Upvotes: 55