(Flynn’s answer is the correct answer. This one addresses the problem more generally.)
You seem to be assuming, OP, that the floating-point inaccuracy in your code is deterministic and predictably wrong (in a way, your approach is the polar opposite of that of people who don’t understand floating point yet).
Although (as Ben points out) floating-point inaccuracy is deterministic, from the point of view of your code, if you are not being very deliberate about what’s happening to your values at every step, this will not be the case. Any number of factors could lead to 0.1 + 0.2 == 0.3
succeeding, compile-time optimisation being one, tweaked values for those literals being another.
Rely here neither on success nor on failure; do not rely on floating-point equality either way.