Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Always Round UP a Double

Tags:

java

rounding

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.

like image 957
sparklyllama Avatar asked Oct 27 '13 04:10

sparklyllama


2 Answers

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:

  • If the argument value is already equal to a mathematical integer, then the result is the same as the argument.
  • If the argument is NaN or an infinity or positive zero or negative zero, then the result is the same as the argument.
  • If the argument value is less than zero but greater than -1.0, then the result is negative zero.

Note that the value of Math.ceil(x) is exactly the value of -Math.floor(-x).

Parameters:

  • a - a value.

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.

like image 193
tabz100 Avatar answered Sep 20 '22 16:09

tabz100


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.
    • If the decimal is equal or higher than 5, then it's rounded up.
      • decimal => 5. (1,5 = 2)
    • If the decimal is less than 5, then it's rounded down.
      • decimal < 5. (1,45 = 1)

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).

like image 34
maral04 Avatar answered Sep 21 '22 16:09

maral04