don’t forget about -inf

What’s with it? It’s just smaller than any other number. Can be protected against by simple “a < 0” check that you most likely already have. Even without a special case in tonumber fixer it most likely won’t cause problems.

it’s not limited to people checking if it’s above zero or not… sometimes they input negative numbers.

[editline]a[/editline]

*on purpose

[editline]b[/editline]

on second thought you should really just use the IsFinite function on the return, the following work in tonumber:

```
] m> tonumber"nan", tonumber"inf", tonumber"-nan", tonumber"-inf", tonumber"+nan", tonumber"+inf"
nan inf nan -inf nan inf
```

[editline]c[/editline]

```
] m> tonumber"1e100000000"
inf
```

inf is not a problem. It adheres to the most important mathematical rules like the infinitely good little boy it is.

This is what I use.

Function

```
function isValidNumber( number )
number = tonumber(number)
if ( number != number ) then
return false
end
if( !number || !isnumber(number) || number <= 0 ) then
return false
end
if ( number == math.huge || number == -math.huge) then
return false
end
return true
end
```

Test

```
concommand.Add("nanTest", function()
print( _VERSION )
print(isValidNumber(1/0))
print(isValidNumber(-1/0))
print(isValidNumber((1/0)/(1/0)))
print(isValidNumber((0/0)/(0/0)))
print(isValidNumber(0/0))
print(isValidNumber(10))
print(isValidNumber(45))
print(isValidNumber(45))
end)
```

Results

```
] nanTest
Lua 5.1
false
false
false
false
false
true
true
true
```