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
🌐
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; System.out.println(Math.ceil(a)); // 2.0 // value equals to 5 after decimal double b = 1.5;
🌐
GeeksforGeeks
geeksforgeeks.org › java › java-ceil-method-examples
Java ceil() method with Examples - GeeksforGeeks
January 21, 2026 - Example 1: This program demonstrates how the Math.ceil() method works with different types of double values in Java. ... import java.lang.Math; class GFG { public static void main(String args[]) { double a = 4.3; double b = 1.0 / 0; double c = 0.0; double d = -0.0; double e = -0.12; System.out.println(Math.ceil(a)); System.out.println(Math.ceil(b)); System.out.println(Math.ceil(c)); System.out.println(Math.ceil(d)); System.out.println(Math.ceil(e)); } }
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.

🌐
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 ... System.out.println(Math.ceil(0.60)); System.out.println(Math.ceil(0.40)); System.out.println(Math.ceil(5)); System.out.println(Math.ceil(5.1)); System.out.println(Math.ceil(-5.1)); System.out.println(Math.ceil(-5.9));
🌐
Scaler
scaler.com › home › topics › math.ceil() in java
Math.ceil() in Java - Scaler Topics
May 5, 2024 - ... Math.ceil() converts the number to the nearest integer greater than or equal to the given number; if an integer is passed as an argument, the result of Math.ceil() will be the same integer, but since Math.ceil() returns a double value the ...
🌐
Codecademy
codecademy.com › docs › java › math methods › .ceil()
Java | Math Methods | .ceil() | Codecademy
December 12, 2022 - Returns the double value that is a mathematical integer and is greater than or equal to the original value.
🌐
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 ...
Find elsewhere
🌐
CodeAhoy
codeahoy.com › java › Math-Ceil-method-JI_15
Java Math.ceil() Method with Examples | CodeAhoy
October 12, 2019 - We use it to find the ceiling value of a number. This function returns the largest integer greater than or equal to the argument provided. In other words, it returns the next largest integer value of the specified number. For example, if you pass it 3.4, it will return 4.
🌐
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)); } }
🌐
Bbminfo
bbminfo.com › java › library › math › ceil.php
Java ceil() - Java Math Functions - bbminfo
import java.lang.Math; class MathExample { public static void main(String[] args) { System.out.println("The ceiling value of 1.0 is " + Math.ceil(1.0)); System.out.println("The ceiling value of 1.1 is " + Math.ceil(1.1)); System.out.println("The ceiling value of 1.2 is " + Math.ceil(1.2)); System.out.println("The ceiling value of 1.3 is " + Math.ceil(1.3)); System.out.println("The ceiling value of 1.4 is " + Math.ceil(1.4)); System.out.println("The ceiling value of 1.5 is " + Math.ceil(1.5)); System.out.println("The ceiling value of 1.6 is " + Math.ceil(1.6)); System.out.println("The ceiling value of 1.7 is " + Math.ceil(1.7)); System.out.println("The ceiling value of 1.8 is " + Math.ceil(1.8)); System.out.println("The ceiling value of 1.9 is " + Math.ceil(1.9)); System.out.println("The ceiling value of 2.0 is " + Math.ceil(2.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 - Math.ceil() does the opposite of Math.floor()—it always rounds up, even if the decimal portion is very small. This is useful when a calculation needs to make sure that even a small fraction counts as a full unit.
🌐
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.
🌐
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
🌐
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.
🌐
Educative
educative.io › answers › what-is-mathceil-in-java
What is Math.ceil() in Java?
The ceil() function returns the nearest smallest double value that is greater than or equal to a number. Figure 1 shows the mathematical representation of the ceil() function.
🌐
Tutorial Gateway
tutorialgateway.org › java-ceil-function
Java ceil Function
March 25, 2025 - package MathFunctions; public class CeilMethodOnArray { public static void main(String[] args) { double [] CeilArray = {10.46, -15.98, 22.44, 95.9999, -4.8799, 12.8597}; for (int i = 0; i < CeilArray.length; i++) { System.out.format("%.2f\n", Math.ceil(CeilArray[i])); } } } ... 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.