在VBScript中,我需要确保用户输入一个整数.
这就是我现在拥有的:
WScript.Echo "Enter an integer number : "
Number = WScript.StdIn.ReadLine
If IsNumeric(Number) Then
' Here, it still could be an integer or a floating point number
If CLng(Number) Then
WScript.Echo "Integer"
Else
WScript.Echo "Not an integer"
End If
End if
Run Code Online (Sandbox Code Playgroud)
问题是CLng()不测试我的数字是否为整数:无论如何转换数字.
有没有办法检查数字是否是整数?
编辑:
建议的答案对我来说不起作用.这是我的代码的新版本:
WScript.Echo "Enter an integer number : "
Number = WScript.StdIn.ReadLine
If IsNumeric(Number) Then
' Here, it still could be an integer or a floating point number
If Number = CLng(Number) Then
WScript.Echo "Integer"
Else
WScript.Echo "Not an integer"
End If
End if
Run Code Online (Sandbox Code Playgroud)
这是输出:
U:\>cscript //nologo test.vbs
Enter an integer number :
12
Not an integer
U:\>cscript //nologo test.vbs
Enter an integer number :
3.45
Not an integer
Run Code Online (Sandbox Code Playgroud)
小智 17
这实际上会起作用:
WScript.Echo "Enter an integer number : "
Number = WScript.StdIn.ReadLine
If IsNumeric(Number) Then
' Here, it still could be an integer or a floating point number
If CStr(CLng(Number)) = Number Then
WScript.Echo "Integer"
Else
WScript.Echo "Not an integer"
End If
End If
Run Code Online (Sandbox Code Playgroud)
以前,问题是您正在比较字符串与永远不会评估为true的整数.
现在,你取一个字符串,检查它是否为数字,将其转换为CLng(),它只返回数字的整数部分,将其转换回字符串,最后将其与原始字符串进行比较.
如果输入..."asdasD"(或任何其他非数字的东西),它不会通过"isNumeric"检查.
如果在转换为CLng()时输入"10.5"(作为字符串),则获得10,然后转换为"10"并与"10.5"进行比较.由于字符串不匹配,它表示它不是整数.
如果你输入"10"转换为CLng()它是10,返回字符串它是"10",当它与"10"匹配时返回true,这意味着它是一个整数.
我知道几年太晚了,但我现在正在调查这个问题,并对此感到困惑.希望它可以帮助其他人像我一样在想.
bac*_*h17 13
这与您的代码非常相似:
WScript.Echo "Enter an integer number : "
Number = WScript.StdIn.ReadLine
If IsNumeric(Number) Then
' Here, it still could be an integer or a floating point number
If CLng(Number) = Number Then
WScript.Echo "Integer"
Else
WScript.Echo "Not an integer"
End If
End If
Run Code Online (Sandbox Code Playgroud)