**Get started with Spring 5 and Spring Boot 2, through the ***Learn Spring* course:

*Learn Spring*course:

Last modified: August 30, 2022

We can use the division operator (/) to divide the left-hand value by the right-hand one in Java. For instance, *int number = 10 / 5*.

In this quick tutorial, we'll explore how to get a *float* result from the integer division operation.

First of all, for simplicity, we'll use unit test assertions to verify the calculation result in this tutorial.

We may have realized **when we apply the division operator on two integers like a/b, it always returns an integer, even though a isn't evenly divisible by **

```
int i = 10 / 4;
assertEquals(2, i);
```

If we run the test, it passes. So, *10 / 4 *produces 2 instead of *2.5*. Moreover, even if we assign the calculation result to a *float* variable, the result is still two:

```
float x = 10 / 4;
assertEquals(2, x);
```

So next, let's first understand why this happens and then figure out how to get the desired *float* result, for example, 2.5 in this case.

To understand why 10 / 4 = 2 in Java, we need to check the division operator section in JLS (Java Language Specification) to know how the division operator's behavior is defined.

First, the specification states that **integer division rounds toward zero**. In other words, **the result of the division operation of two integers is only the quotient value. The remainder is not included.**

Therefore, when we calculate *10 / 4*, we get 2 instead of 2.5.

Next, let's see how to get the expected *float* result if the two integers are not divisible.

Now, we've understood how the division operator works with two integers. JLS has also defined primitive operands conversion rules in Binary numeric promotion.

**Binary numeric promotion is performed on *, /, and % operators**. Therefore, the division operation follows the operand conversion rules.

So next, let's take a closer look at the operand conversion rule.

As per the JLS, when we calculate *a/b*:

- If either operand is of type
*double,*the other is converted to*double.* - Otherwise, if either operand is of type
*float,*the other is converted to*float.* - Otherwise, if either operand is of type
*long,*the other is converted to*long.* - Otherwise, both operands are converted to type
*int.*

Based on the rule above, if we want to make the *a/b* operation result in a *float* number, at least one operand should be of type *float. *

So, next, let's see if we can get the expected result when we cast one operand to *float*:

```
float x = (float) 10 / 4;
assertEquals(2.5, x);
float y = 10 / (float) 8;
assertEquals(1.25, y);
```

The test above passes if we give it a run. Therefore, **casting any operand to float makes the division produce a float result**.

In this quick article, we've discussed why the division of integers always results in integers in Java.

Further, we've addressed how to get the expected *float* result from the division of integers. This is particularly useful for nondivisible cases.

As usual, all code snippets presented in the article are available over on GitHub.

Login

0 Comments

Follow the Java Category

Follow the Java category to get regular info about the new articles and tutorials we publish here.