causes gcc to optimize floatVal!=(i32)floatVal to floatVal!=round(floatVal), which is technically valid as that conversion is UB on overflow, but we want it to work anyways