Java (JDK), 109 7676 63 bytes
(a,b)->Float>b->a.intBitsToFloat(Floata.floatToIntBits(a)^Float^a.floatToIntBits(b)) Been a while since I golfed in Java and I'm not certain if I need the declaration on the LHS as part of the byte count? If it used DoubleBinaryOperator the LHS would be shorter, but the RHS would have to use Double.doubleToLongBits and Double.longBitsToDouble, so that's actually longer.
Thanks to Neil for a substantial savings on the byte count!
Thanks to Unmitigated for currying the way to another improvement!