Это на самом деле будет работать:
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
Раньше проблема заключалась в том, что вы сравнивали строку с целым числом, которое никогда не получило бы значение true.
Теперь вы берете строку, проверяете, является ли она числовой, преобразовываете ее в CLng (), которая будет возвращать только целую часть числа, преобразуете ее обратно в строку и, наконец, сравниваете ее с исходной строкой.
Если вы введете ... "asdasD" (или любую другую нечисловую вещь), она не пройдет проверку "isNumeric".
Если вы введете «10,5» (в виде строки) при преобразовании в CLng (), вы получите 10, когда затем преобразуетесь в «10» и сравните с «10,5». Поскольку строки не совпадают, он говорит, что это не целое число.
Если вы введете «10», преобразованное в CLng (), это 10, обратно в строку это «10», которое возвращает true при сопоставлении его с «10», то есть это целое число.
Я знаю, что уже на несколько лет позже, но я сам сейчас изучал это и был озадачен этим. Надеюсь, что это поможет кому-то еще удивляться, как я.