Come posso verificare una variabile per verificare se contiene un numero ed è un numero intero?Come rilevare se un dato numero è un numero intero?
ad es.
if (1.589 == integer) // false
if (2 == integer) // true
Eventuali indizi?
Come posso verificare una variabile per verificare se contiene un numero ed è un numero intero?Come rilevare se un dato numero è un numero intero?
ad es.
if (1.589 == integer) // false
if (2 == integer) // true
Eventuali indizi?
num % 1 === 0
Questo convertirà num
digitare Number
prima, in modo che qualsiasi valore che può essere convertito in un intero passerà il test (ad esempio '42'
, true
).
Se si desidera escludere questi, inoltre verificare la presenza di
typeof num === 'number'
Si potrebbe anche usare parseInt()
per fare questo, cioè
parseInt(num) == num
per un controllo non tipizzato e
parseInt(num) === num
per un controllo dattilografato.
Si noti che i test non sono equivalenti: il controllo tramite parseInt()
verrà convertito prima in String
, quindi ad esempio true
non supererà il controllo.
noti inoltre che il controllo untyped via parseInt()
gestirà correttamente le stringhe esadecimali, ma sarà sicuro per ottali (cioè stringhe numeriche con zero iniziale) in quanto questi sono riconosciute da parseInt()
ma non da Number()
. Se è necessario gestire le stringhe decimali con zeri iniziali, è necessario specificare l'argomento radice.
Questo lo fa, grazie. – jirkap
C'è una funzione javascript chiamata isNaN (val) che restituisce true se val non è un numero.
Se si desidera utilizzare val come un numero, è necessario lanciare usando parseInt() o parseFloat()
EDIT: oops . Corretto l'errore come indicato nel commento
Proprio dal nome della funzione, penserei che "isNaN" restituirebbe true se val "is * Not * a Number", che è ciò che NaN rappresenta. Errore di battitura? –
isNaN (val) restituisce true se val non è un numero, ma restituisce false anche per i numeri non interi, quindi non risolverà il problema. – Amok
ne dite di questo:
if((typeof(no)=='number') && (no.toString().indexOf('.')==-1))
Questo non funzionerà perché 8.000 è ancora un numero intero. –
Questo probabilmente dipende dalla definizione (e dal caso d'uso) del numero intero – bdukes
Hmm. Vero. Per questioni intrinsecamente matematiche, tendo a pensarle in termini di numeri e non di numeri - quindi, il mio commento sopra. –
si potrebbe o fare uso di Javas parsing capacità o così provare l'operatore modulo% ...
Sarebbe questo non funziona:
if (parseInt(number, 10) == number)
{
alert(number + " is an integer.");
}
Qualcuno ha già done it for you.
Come dice @Greg sopra (http://stackoverflow.com/questions/1323314/detecting-if-a-given-number- is-an-integer # comment-1157013), questo dovrebbe includere il parametro radix su parseInt. – bdukes
Questo funziona:
if (Math.floor(x) == x)
Questo ha il vantaggio di lavorare se x è 'falso'; –
è possibile utilizzare la definizione formale di numeri interi:
Math.floor(x) === x
possibile duplicato di [Come verificare se una variabile è un intero in Javascript?] (Http:// StackOverflow.it/questions/14636536/how-to-check-if-a-variable-is-an-integer-in-javascript) –