There is currently no way no easy way to identify whether data is numeric or not. The workaround for X is to check the following set of conditions:
NOT (VALUE(X) <= 0 OR VALUE(X) >= 0)
Currently this is certainly not a consistent approach and there is always a risk that the comparison operators ("<=" and ">=") will start behaving differently which will lead to errors.