VBScript:检查用户输入是否为整数

Jér*_*ôme 19 vbscript

在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)

  • `CLng(Number) = Number` 将不起作用,因为操作数具有不同的类型,因此检查将失败,请参阅 @cogumel0 的答案。 (2认同)