如何检查输入是否为数字
how to check if an input is a number
如何检查输入是否为数字?我的理论是这样的:
local isNumber = tonumber(arg[1])
if isNumber then
print"This is sure a number"
else
print"This is not a number"
end
那么,你怎么看?
如果 tonumber(arg[1])
不 return nil,arg[1]
表示一个数字。因此,例如,这也适用于字符串 "1"
如果要确定是数值检查type(arg[1]) == "number"
如果您想知道一个数字是整数还是浮点数,请使用 math.type()
> type(math.pi) -- Normal
number
> math.type(math.pi) -- Extended
float
> math.type(math.maxinteger) -- Never puts out only "number"
integer
-- For checking with pcall() and assert() do
> do
>> local rc,res=pcall(assert,math.type(math.pi)=='float')
>> if rc and res then
>> return math.deg(math.pi),rc,res
>> else
>> error('Try something else')
>> end
>> end
180.0 true true
最后一个 do ... end
块显示了 Lua 等同于其他语言中已知的“Try/Catch”异常处理。
local isNumber = arg[1]
if type(isNumber) ~= "number" then isNumber = tonumber(isNumber) end
如何检查输入是否为数字?我的理论是这样的:
local isNumber = tonumber(arg[1])
if isNumber then
print"This is sure a number"
else
print"This is not a number"
end
那么,你怎么看?
tonumber(arg[1])
不 return nil,arg[1]
表示一个数字。因此,例如,这也适用于字符串 "1"
如果要确定是数值检查type(arg[1]) == "number"
如果您想知道一个数字是整数还是浮点数,请使用 math.type()
> type(math.pi) -- Normal
number
> math.type(math.pi) -- Extended
float
> math.type(math.maxinteger) -- Never puts out only "number"
integer
-- For checking with pcall() and assert() do
> do
>> local rc,res=pcall(assert,math.type(math.pi)=='float')
>> if rc and res then
>> return math.deg(math.pi),rc,res
>> else
>> error('Try something else')
>> end
>> end
180.0 true true
最后一个 do ... end
块显示了 Lua 等同于其他语言中已知的“Try/Catch”异常处理。
local isNumber = arg[1]
if type(isNumber) ~= "number" then isNumber = tonumber(isNumber) end