All'interno di un VBScript, ho bisogno di assicurarmi che l'utente inserisca un intero.VBScript: verifica se l'input dell'utente è un numero intero
Ecco quello che ho adesso:
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
Il problema è che CLng() non verifica se il mio numero è un numero intero: il numero viene convertito in ogni caso.
C'è un modo per verificare se un numero è un numero intero?
EDIT:
La risposta suggerita non funziona come bene per me. Ecco una nuova versione del mio codice:
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
e qui è l'output:
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
IsNumeric ha un problema. Immettere "12,6,14" e IsNumeric restituisce true e genererà un'eccezione nell'istruzione CLng. – LarryBud
'CLng (Number) = Number' non funzionerà in quanto gli operandi hanno un tipo diverso, quindi il controllo fallirà, vedere la risposta di @ cogumel0. – ViRuSTriNiTy