My guess is that it’s because it’s performing a behind the scenes truncating operation at different points in time. In the first example it would do it on the entire equation while in the second example it happens in the parentheses then again on the result. UE4 does some stuff behind the scenes which has thrown me for a loop from time to time as well.
Personally I would just use an integer to represent health and then use FloorToInt() or RoundToFloat() on all operations if the floating point isn’t important which in most cases it isn’t.