"number" is implemented via BCD, so arithmetic and comparisons are much slower than for "integer". Because "integer" is stored in the machine's native binary format, 32-bit for most machines today, with 64-bit integers making headway.
You would add the range checks for integer to the template form engine's VALIDATE proc for the integer type ...