una - programas en javascript resueltos
¿Cómo detectar si un número dado es un número entero? (8)
¿Cómo puedo probar una variable para determinar si contiene un número y es un número entero?
p.ej
if (1.589 == integer) // false
if (2 == integer) // true
¿Alguna pista?
¿Esto no funcionaría?
if (parseInt(number, 10) == number)
{
alert(number + " is an integer.");
}
Alguien ya lo ha hecho por ti .
Esto funciona:
if (Math.floor(x) == x)
Hay una función de javascript llamada isNaN (val) que devuelve true si val no es un número.
Si desea usar val como un número, debe convertir usando parseInt () o parseFloat ()
EDIT: oops. Se corrigió el error como se menciona en el comentario.
Podrías usar la definición formal de entero:
Math.floor(x) === x
Qué tal esto:
if((typeof(no)==''number'') && (no.toString().indexOf(''.'')==-1))
Usted podría hacer uso de las capacidades de análisis de Java o también probar el operador de módulo% ...
num % 1 === 0
Esto convertirá primero el Number
al tipo, por lo que cualquier valor que se pueda convertir a un entero pasará la prueba (por ejemplo, ''42''
, true
).
Si desea excluir estos, compruebe adicionalmente para
typeof num === ''number''
También puedes usar parseInt()
para hacer esto, es decir
parseInt(num) == num
para un cheque sin atar y
parseInt(num) === num
para un cheque mecanografiado.
Tenga en cuenta que las pruebas no son equivalentes: la verificación a través de parseInt()
primero se convertirá a String
, por lo que, por ejemplo, true
no pasará la verificación.
También tenga en cuenta que el cheque sin tipo a través de parseInt()
manejará las cadenas hexadecimales correctamente, pero fallará para los octales (es decir, cadenas numéricas con cero) como son reconocidas por parseInt()
pero no por Number()
. Si necesita manejar cadenas decimales con ceros iniciales, deberá especificar el argumento de la raíz.