Where have I gone wrong with my int maths?

Is it always that an int*float = int then?

No. int * float is a float. The result is then stored somewhere, which influences the result.

Do you think what i've done (with your suggestion of 1000000.0) is the best way to do that calculation

Best? I don't know. Workable? Yes.