I believe it’s true that the input is acceptable if and only if either:
- It is a prefix substring of the lower bound converted to string
or
- The input followed by any number of additional zeros (possibly none) falls into the range
The first rule is required by e.g. 13 is in range (135, 140)
. The second rule is required by e.g. 2 is in range (1000, 3000)
.
The second rule can be efficiently tested by a series of multiplies by 10, until the scaled input exceeds the upper bound.