You are doing 157/32 which is dividing two integers with each other, which always result in a rounded down integer. Therefore the (int) Math.ceil(...) isn't doing anything. There are three possible solutions to achieve what you want. I recommend using either option 1 or option 2. Please do NOT use option 0.

Option 0

Convert a and b to a double, and you can use the division and Math.ceil as you wanted it to work. However I strongly discourage the use of this approach, because double division can be imprecise. To read more about imprecision of doubles see this question.

int n = (int) Math.ceil((double) a / b));

Option 1

int n = a / b + ((a % b == 0) ? 0 : 1); 

You do a / b with always floor if a and b are both integers. Then you have an inline if-statement which checks whether or not you should ceil instead of floor. So +1 or +0, if there is a remainder with the division you need +1. a % b == 0 checks for the remainder.

Option 2

This option is very short, but maybe for some less intuitive. I think this less intuitive approach would be faster than the double division and comparison approach:
Please note that this doesn't work for b < 0.

int n = (a + b - 1) / b;

To reduce the chance of overflow you could use the following. However please note that it doesn't work for a = 0 and b < 1.

int n = (a - 1) / b + 1;

Explanation behind the "less intuitive approach"

Since dividing two integers in Java (and most other programming languages) will always floor the result. So:

int a, b;
int result = a/b (is the same as floor(a/b) )

But we don't want floor(a/b), but ceil(a/b), and using the definitions and plots from Wikipedia:

With these plots of the floor and ceil functions, you can see the relationship.

You can see that floor(x) <= ceil(x). We need floor(x + s) = ceil(x). So we need to find s. If we take 1/2 <= s < 1 it will be just right (try some numbers and you will see it does, I find it hard myself to prove this). And 1/2 <= (b-1) / b < 1, so

ceil(a/b) = floor(a/b + s)
          = floor(a/b + (b-1)/b)
          = floor( (a+b-1)/b) )

This is not a real proof, but I hope you're satisfied with it. If someone can explain it better I would appreciate it too. Maybe ask it on MathOverflow.

Answer from martijnn2008 on Stack Overflow
🌐
W3Schools
w3schools.com › java › ref_math_ceil.asp
Java Math ceil() Method
Java Examples Java Videos Java Compiler Java Exercises Java Quiz Java Code Challenges Java Server Java Syllabus Java Study Plan Java Interview Q&A Java Certificate · ❮ Math Methods · Round numbers up to the nearest integer: System.out.p...
🌐
Programiz
programiz.com › java-programming › library › math › ceil
Java Math ceil()
double a = 3.24; System.out.println(Math.ceil(a)); } } // Output: 4.0 ... Here, ceil() is a static method. Hence, we are accessing the method using the class name, Math. The ceil() method takes a single parameter. ... Note: The returned value will be the smallest value that is greater than or equal to the specified argument. class Main { public static void main(String[] args) { // Math.ceil() method // value greater than 5 after decimal double a = 1.878;
🌐
GeeksforGeeks
geeksforgeeks.org › java › java-ceil-method-examples
Java ceil() method with Examples - GeeksforGeeks
January 21, 2026 - The Math.ceil() method in Java is used to return the smallest integer value that is greater than or equal to a given number. The returned value is of type double and represents the mathematical ceiling of the argument.
Top answer
1 of 15
246

You are doing 157/32 which is dividing two integers with each other, which always result in a rounded down integer. Therefore the (int) Math.ceil(...) isn't doing anything. There are three possible solutions to achieve what you want. I recommend using either option 1 or option 2. Please do NOT use option 0.

Option 0

Convert a and b to a double, and you can use the division and Math.ceil as you wanted it to work. However I strongly discourage the use of this approach, because double division can be imprecise. To read more about imprecision of doubles see this question.

int n = (int) Math.ceil((double) a / b));

Option 1

int n = a / b + ((a % b == 0) ? 0 : 1); 

You do a / b with always floor if a and b are both integers. Then you have an inline if-statement which checks whether or not you should ceil instead of floor. So +1 or +0, if there is a remainder with the division you need +1. a % b == 0 checks for the remainder.

Option 2

This option is very short, but maybe for some less intuitive. I think this less intuitive approach would be faster than the double division and comparison approach:
Please note that this doesn't work for b < 0.

int n = (a + b - 1) / b;

To reduce the chance of overflow you could use the following. However please note that it doesn't work for a = 0 and b < 1.

int n = (a - 1) / b + 1;

Explanation behind the "less intuitive approach"

Since dividing two integers in Java (and most other programming languages) will always floor the result. So:

int a, b;
int result = a/b (is the same as floor(a/b) )

But we don't want floor(a/b), but ceil(a/b), and using the definitions and plots from Wikipedia:

With these plots of the floor and ceil functions, you can see the relationship.

You can see that floor(x) <= ceil(x). We need floor(x + s) = ceil(x). So we need to find s. If we take 1/2 <= s < 1 it will be just right (try some numbers and you will see it does, I find it hard myself to prove this). And 1/2 <= (b-1) / b < 1, so

ceil(a/b) = floor(a/b + s)
          = floor(a/b + (b-1)/b)
          = floor( (a+b-1)/b) )

This is not a real proof, but I hope you're satisfied with it. If someone can explain it better I would appreciate it too. Maybe ask it on MathOverflow.

2 of 15
62

157/32 is int/int, which results in an int.

Try using the double literal - 157/32d, which is int/double, which results in a double.

🌐
Codecademy
codecademy.com › docs › java › math methods › .ceil()
Java | Math Methods | .ceil() | Codecademy
December 12, 2022 - The Math.ceil() method returns the double value that is a mathematical integer and is greater than or equal to the original value. ... Looking for an introduction to the theory behind programming?
🌐
Tutorialspoint
tutorialspoint.com › java › lang › math_ceil.htm
Java - Math ceil(double) Method
package com.tutorialspoint; public class MathDemo { public static void main(String[] args) { // get a double number double x = 10.7; // print the ceil of the number System.out.println("Math.ceil(" + x + ")=" + Math.ceil(x)); } }
🌐
CodeAhoy
codeahoy.com › java › Math-Ceil-method-JI_15
Java Math.ceil() Method with Examples | CodeAhoy
October 12, 2019 - For example, if you pass it 3.4, it will return 4. ... It takes an argument of type double and returns a value as a double that is less than or equal to the argument and is equal to a mathematical integer. ... The following example illustrates how to use Math.ceil(double) method. public class ...
🌐
Scaler
scaler.com › home › topics › math.ceil() in java
Math.ceil() in Java - Scaler Topics
May 5, 2024 - Math.ceil() returns a double value that is equal to the nearest mathematical integer greater or equal to the given number. If the input parameter is a character ceil function returns the ceil of the ASCII value of the character.
Find elsewhere
🌐
Guru99
guru99.com › home › java tutorials › java math – ceil() floor() methods
Java Math – ceil() Floor() Methods
September 20, 2024 - Java Math Class provides useful methods for performing the math’s operations like exponential, logarithm, roots and trigonometric equations too. This tutorial teaches Java Math Class with examples.
🌐
Javatpoint
javatpoint.com › java-math-ceil-method
Java Math.ceil() method with Examples - Javatpoint
The java.lang.Math.ceil () is used to find the smallest integer value that is greater than or equal to the argument or mathematical integer · Java method The java.lang. return the unbiased exponent used in the representation of double or float. Syntax public static int getExponent(float x) ...
🌐
How to do in Java
howtodoinjava.com › home › java math.ceil() vs. math.floor() vs. math.round()
Java Math.ceil() vs. Math.floor() vs. Math.round()
September 6, 2023 - The Math.ceil() method is primarily used when we want to ensure that a number is rounded up to the next highest integer, regardless of its decimal part. In the following example, Math.ceil(4.3) rounds up 4.3 to 5.0, ensuring the result is not ...
🌐
Oracle
docs.oracle.com › javase › 8 › docs › api › java › lang › Math.html
Math (Java Platform SE 8 )
1 week ago - (In the foregoing descriptions, ... method ceil or, equivalently, a fixed point of the method floor. A value is a fixed point of a one-argument method if and only if the result of applying the method to the value is equal to the value.) The computed result must be within 1 ulp of the ...
🌐
CodeGym
codegym.cc › java blog › java math › java math.ceil() method
Java Math.ceil() method
October 11, 2023 - class Main { public static void main(String[] args) { Double totalStudentsInClass = 25.0; Double flourWeightInKgs = 5.13; Double aPoundOfOxygenInLitres = 0.3977; Double startingArrayIndexInJava = 0.0; Double aSelfDrivingCar = Double.NaN; Double numberOfStarsInTheSky = Double.POSITIVE_INFINITY; // For parameter [ -1 > x < 0 ] Double x = -0.025; // using Math.ceil() method System.out.println("Total Students In Class = " + Math.ceil(totalStudentsInClass)); System.out.println("Flour Weight In Kgs = " + Math.ceil(flourWeightInKgs)); System.out.println("A Pound of Oxygen in Litres = " + Math.ceil(aP
🌐
Tutorial Gateway
tutorialgateway.org › java-ceil-function
Java ceil Function
March 25, 2025 - In this math ceil example, we declared an Array of double types and assigned some random values. double [] CeilArray = {10.46, -15.98, 22.44, 95.9999, -4.8799, 12.8597}; Next, We used Java For Loop to iterate the Array. Within the For Loop, we initialized the i as 0.
🌐
Vultr Docs
docs.vultr.com › java › standard-library › java › lang › Math › ceil
Java Math ceil() - Round Up Value | Vultr Docs
September 27, 2024 - Use Math.ceil() to round the number to the nearest integer. ... This code rounds the value 3.14 up to 4.0.
🌐
Medium
medium.com › @AlexanderObregon › rounding-numbers-with-math-round-math-floor-and-math-ceil-in-java-d201bbeb85e2
Java’s Math Rounding Methods Explained | Medium
March 7, 2025 - If a program needs 4.1 MB to run properly, rounding down to 4 MB wouldn’t be enough. Using Math.ceil() makes sure it gets 5 MB, avoiding unexpected failures due to insufficient ...
🌐
javaspring
javaspring.net › blog › ceil-java
Understanding and Using `Math.ceil()` in Java — javaspring.net
If x = 3.2, Math.ceil(x) will return 4.0 because 4 is the smallest integer greater than 3.2.
🌐
Quora
quora.com › What-is-the-difference-between-Math-round-and-Math-ceil-in-Java-Which-one-is-recommended-for-rounding-off-numbers-and-why
What is the difference between Math.round and Math.ceil in Java? Which one is recommended for rounding off numbers and why? - Quora
Answer: Math.round(m) returns the integer closest to m. In case of a tie (decimal part being 0.5), it rounds towards positive infinity. So 4.5 rounds to 5, -4.5 rounds to -4. Math.floor(m) returns the largest integer less than or equal to m, whereas Math.ceil(m) returns the smallest integer larg...
🌐
BeginnersBook
beginnersbook.com › 2022 › 10 › java-math-ceil-method
Java Math.ceil() Method
October 9, 2022 - public class JavaExample { public static void main(String[] args) { double n1 = 19.1, n2 = -19.1; System.out.println(Math.ceil(n1)); System.out.println(Math.ceil(n2)); } } Output: public class JavaExample { public static void main(String[] args) { // -1 < n < 0 double n = -.15; System.out.println(Math.ceil(n)); } } Output: public class JavaExample { public static void main(String[] args) { double n1 = 5.0/0; //positive infinity double n2 = -5.0/0; //negative infinity System.out.println(Math.ceil(n1)); System.out.println(Math.ceil(n2)); } } Output: public class JavaExample { public static void main(String[] args) { double n = 0.0/0; //NaN System.out.println("Ceil for NaN: "+Math.ceil(n)); } } Output: Java Math.signum() Java Math.pow() Java Math.cbrt() Java Math.sqrt() ❮ Java Math ·