The function in java Math.ceil () should round the number up when dividing, i.e. to the right
So when dividing 12/5 = 2.4, then Math.ceil (12/5) = 3;
but:
public static void main (String [] args) {
System.out.println (Math.ceil (12/5));
}
Outputs me 2.0, Math.floor (12/5) also outputs 2.0. Maybe I don’t understand correctly how they work?
Answer 1, authority 100%
For convenience of any rounding, it is best to use the BigDecimal
class:
new BigDecimal (12.0 / 5) .setScale (0, RoundingMode.CEILING) .doubleValue ();
The first parameter indicates to what sign the rounding is, and the second indicates the rounding rule.
Answer 2, authority 90%
The fact is that 12/5
is itself an integer division, the result is already 2
.
Math.ceil (12.0 / 5) == 3.0
Answer 3
The problem is that in java there are no special operators like div
or mod
like in Pascal. Therefore, the / sign works like an integer division of 12/5 and is really 2 (and a remainder of 2). That is why, if we want to get a fraction, we need to customize the integer divisor and the dividend to float. And you can do it as you like. At least 12f / 5f
, at least (float) a / (float) b
. And only after that you can round-up, etc.