How to round *down* integers in Java?
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
You could divide the number by 1000, apply Math.floor
, multiply by 1000 and cast back to integer.
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)