You are not correct in your assertion that SETNULL requires an integer raster. If I understand your post, what you want to do is as simple as the following raster calculator statement:
SETNULL([dem] >= 3001, [dem])
SETNULL([dem] <= 3000, [dem])
You can also define an embedded range (i.e. 2800-3200) using SETNULL.
SETNULL([dem] >= 2800 & [dem] <= 3200, [dem])