How could I always round up a double
to an int
, and never round it down. I know of Math.round(double)
, but I want it to always round up. So if it was 3.2
, it gets rounded to 4.
You can use Math.ceil()
method.
See JavaDoc link: https://docs.oracle.com/javase/10/docs/api/java/lang/Math.html#ceil(double)
From the docs:
ceil
public static double ceil(double a)
Returns the smallest (closest to negative infinity) double value that is greater than or equal to the argument and is equal to a mathematical integer. Special cases:
Note that the value of Math.ceil(x) is exactly the value of -Math.floor(-x).
Parameters:
Returns:
The smallest (closest to negative infinity) floating-point value that is greater than or equal to the argument and is equal to a mathematical integer.
In simple words,
Math.ceil
will always round UP or as said above, in excess. Math.round
will round up or down depending on the decimals. Examples of Math.ceil
and Math.round
:
The code Below would return:
Cost, without Ceil 2.2 and with Ceil 3 (int), 3.0 (double). If we round it: 2
int m2 = 2200; double rate = 1000.0; int costceil = (int)Math.ceil(m2/rate); double costdouble = m2/rate; double costdoubleceil = Math.ceil(m2/rate); int costrounded = (int)Math.round(m2/rate); System.out.println("Cost, without Ceil "+costdouble+" and with Ceil "+ costceil+"(int), "+costdoubleceil+"(double). If we round it: "+costrounded);
If we change the value of m2 to for example 2499, the result would be: Cost, without Ceil 2.499 and with Ceil 3 (int), 3.0 (double). If we round it: 2
If we change the value of m2 to for example 2550, the result would be:
Cost, without Ceil 2.55 and with Ceil 3 (int), 3.0 (double). If we round it: 3
Hope it helps. (Information extracted from previous answers, i just wanted to make it clearer).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With