If your expression has only int terms, it does int calculations, regardless of whether or not it gets assigned to a float afterwards(1). The assignment has no effect on the calculation itself.
For example, the sub-expression 150 * 10000 / 155 will give you the exact value 9677 rather than the more accurate value (around 9677.419).
You need to tell it to do the calculation as a floating point one, this can be done by simply making the first term 150.0 rather than 150.
Keep in mind this will actually do the calculations as double (higher range and precision than float). Then any precision-loss adjustments will be made when that's assigned to the float target. If that's a problem with your (possibly limited) platform, you can still use float in the calculation by using 150f(2).
That's also why your "using uint64_t and doing multiplications first" (in one of your comments) didn't help here. That only affects the final type, the calculations are still done with the int type so any overflow would not be avoided. Again, you can fix that by using something like (uint64_t)150 rather than 150 in your expression.
(1) The general rule with an expression operand1 operation operand2 is that the two operands are first modified in such a way that they have the same "common real type".
So, for example, two int operands would stay int. For an int and long, the int would be converted to long. The result is then of that same type. This is covered in the ISO (C17) standard under
6.3.1 Arithmetic operands and 6.3.1.8 Usual arithmetic conversions. The former gives the ranks of the various integral types, the latter explains how the conversions are performed in detail.
Importantly here, a float and an int would have the latter "upgraded" to a float before doing the calculation.
(2) There's a lot of discussion in various net locations about the floating point performance on the EPS32 so double operations may be problematic depending on your needs. But, as with all optimisation issues, you should measure, not guess. You can then intelligently make a cost/benefit decision to choose between speed and range/precision.