# Divide two integers resulting into a float

Suppose I want to divide two integer variables and put the result into a float. In order to prevent integer division do I have to program like this:

``````    int i = 6312;
int j = 258;
float f;
f = i;
f = i/j;
``````

Or can I straightforward program like below and the compiler makes sure it is handled the 'proper' way:

``````    f = i/j;
``````
• why don't you run a test? Jan 5, 2019 at 23:43
• Isn't there a typo in your first block of code? Did you mean to write `f = f/j;`? Otherwise, (a) why bother assigning `f = i;`? and (b) the last line of the first block is exactly the same as the line in the second block... So the question doesn't make much sense... unless you made a typo... Sep 8, 2021 at 16:30
• @Greenonline: you are correct, in the first block of code I should have written f = f/j;
– PimV
Sep 9, 2021 at 10:00

Cast the integers to float before doing the calculation.

``````float f = float(i) / float(j);
``````

or

``````float f = (float) i / (float) j;
``````

Always be clear how the calculation should be done, so the compiler will do what you want it to do.

• or `float f = (float) i / j;`
– Juraj
Jan 6, 2019 at 6:39
• @Juraj, that relies on the compiler to do a float calculation when a float and a int are involved. I prefer to make it clear for someone reading the code and for the compiler what is going on without having to think about it.
– Jot
Jan 6, 2019 at 9:12

As Arduino is C++, you should really use a static cast, to be technically accurate. However, for Arduino code it probably doesn't really matter.

So either

``````float f = static_cast< float >(i) / static_cast< float >(j);
``````

or

``````float f = static_cast< float >(i) / j;
``````

Note: Using a static cast on each operand, rather than just one, is useful to quiet any warnings about the loss of precision with `int` to `float`, which typically needs to form a rounded `float` for large `int` values.

Just to add to Jot's answer: Strictly speaking, it should be pointed out that `(float)` is C, whereas `float()` is C++.

```int i = 6312;