Editar: Como Ollie señaló en el comentario debajo de esta publicación, is_integer es parte de la biblioteca estándar y por lo tanto no se debe volver a implementar como lo hice a continuación.
Esta función utiliza el hecho de que cada otro número entero tendrá al menos un número divisible por dos sin resto. Cualquier representación fraccional distinta de cero en n
o n+1
hará que n%2
y (n+1)%2
tengan un resto. Esto tiene la ventaja de que los números enteros representados como valores flotantes devolverán True. La función funciona correctamente para positivo y números negativos y cero, hasta donde puedo determinar. Como se menciona en la función, falla para valores muy cercanos a un entero.
def isInteger(n):
"""Return True if argument is a whole number, False if argument has a fractional part.
Note that for values very close to an integer, this test breaks. During
superficial testing the closest value to zero that evaluated correctly
was 9.88131291682e-324. When dividing this number by 10, Python 2.7.1 evaluated
the result to zero"""
if n%2 == 0 or (n+1)%2 == 0:
return True
return False
¿Qué quiere decir con decimales en este caso? Un entero es un número entero. Siempre es un número entero. De alguna manera, parece que quieres verificar un número entero de enfermedades: * Este número entero tiene decimales, ¡tenemos que llevarlo al hospital! *;) –
¿A qué te refieres con "decimales" en este contexto? ¿Punto decimal? Los enteros nunca los tienen (un número con un punto decimal se analiza como un número de coma flotante). –
Un entero por definición no tiene decimales. Tada! ¡Estás listo! –