Question: Does anyone have an idea why this is happening?

```
>>> 289.6*(100-50)
14480.000000000002

```

it should give just **14480** !!

I tried something else and it confused me more

```
>>> 289.6*10*5
14480.0

```

so why the first one gives **14480.000000000002** and the second gives **14480.0** while it is the same!

Answer: 
python converts up to float because of your 289.6. if you want an int, try
`int(289.6*(100-50))`
and that will cast the answer to int.  

The reason your result has the crazy .0000000002 at the end is because of how floats are stored in computers. For a more in depth read on that, [read this](https://www.geeksforgeeks.org/floating-point-error-in-python/)
Take a look here:
<https://docs.python.org/3/tutorial/floatingpoint.html>

The gist of it is that floating-point numbers are approximations. In your case, this is probably an approximation of a binary number, displayed as a decimal one.