¿Cómo puedo probar una variable para determinar si contiene un número, y es un número entero?¿Cómo detectar si un número dado es un número entero?
por ejemplo
if (1.589 == integer) // false
if (2 == integer) // true
Alguna pista?
¿Cómo puedo probar una variable para determinar si contiene un número, y es un número entero?¿Cómo detectar si un número dado es un número entero?
por ejemplo
if (1.589 == integer) // false
if (2 == integer) // true
Alguna pista?
num % 1 === 0
Esto convertirá num
para escribir Number
primero, por lo que cualquier valor que se puede convertir en un entero pasará la prueba (por ejemplo '42'
, true
).
Si desea excluir estos, además, comprobar si hay
typeof num === 'number'
También es posible usar parseInt()
de hacer esto, es decir
parseInt(num) == num
para un control sin tipo y
parseInt(num) === num
para un cheque mecanografiado.
Tenga en cuenta que las pruebas no son equivalentes: Comprobación través parseInt()
será primero convertir a String
, por lo que por ejemplo true
no pasará el cheque.
También tenga en cuenta que el cheque sin tipo a través de parseInt()
manejará cadenas hexadecimales correctamente, pero se producirá un error de octales (es decir, cadenas numéricas con cero a la izquierda) ya que estos son reconocidos por parseInt()
pero no por Number()
. Si necesita manejar cadenas de decimales con ceros a la izquierda, deberá especificar el argumento de raíz.
Éste lo hace, gracias. – jirkap
Hay una función de javascript llamada isNaN (val) que devuelve verdadero si val no es un número.
Si desea utilizar val como un número, es necesario enviar contenido a través parseInt() o parseFloat()
EDIT: Uy. Se ha corregido el error que se menciona en el comentario
Solo por el nombre de la función, creo que "isNaN" volvería verdadero si val "es * No * un Número", que es lo que significa NaN. ¿Error de tipografía? –
isNaN (val) devuelve verdadero si val no es un número, pero también devuelve falso para números no enteros, por lo que no resolverá el problema. – Amok
¿Qué tal esto:
if((typeof(no)=='number') && (no.toString().indexOf('.')==-1))
Eso no funcionará porque 8,000 sigue siendo un número entero. –
Eso probablemente dependa de su definición (y caso de uso) del número entero – bdukes
Hmm. Cierto. Para las preguntas inherentemente matemáticas, tiendo a pensar en ellas en términos de números y no de números, por lo tanto, mi comentario anterior. –
que podría o bien hacer uso de las capacidades de análisis sintáctico javas o así probar el operador módulo% ...
Que este no funciona:
if (parseInt(number, 10) == number)
{
alert(number + " is an integer.");
}
Alguien tiene ya done it for you.
Como @Greg dice más arriba (http://stackoverflow.com/questions/1323314/detecting-if-a-given-number- is-an-integer # comment-1157013), esto debería incluir el parámetro radix para parseInt. – bdukes
Esto funciona:
if (Math.floor(x) == x)
Esto tiene la ventaja de funcionar si x es 'falso'; –
podría utilizar la definición formal de número entero:
Math.floor(x) === x
posible duplicado de [¿Cómo comprobar si una variable es un número entero en Javascript?] (Http://desbordamiento de pila.com/questions/14636536/how-to-check-if-a-variable-is-an-integer-in-javascript) –