Determinar se un número é un número enteiro ou un decimal en Python

Negocios

Determina se un número é un número enteiro ou un decimal en Python.

Os seguintes casos explícanse con códigos de exemplo.

  • Determina se un número é un enteiro int ou un flotante de coma flotante:isinstance()
  • Determina se un número de tipo flotante é un número enteiro (0 decimais):float.is_integer()
  • Determina se unha cadea numérica é un número enteiro

Para obter os valores enteiros e decimais dun número decimal, consulte o seguinte artigo.

Consulte o seguinte artigo para obter información sobre como determinar se unha cadea é un número (incluíndo os números chineses, etc.) en lugar de se é un número enteiro ou decimal.

Determina se un número é de tipo enteiro ou de coma flotante:isinstance()

O tipo dun obxecto pódese obter coa función incorporada type().

i = 100
f = 1.23

print(type(i))
print(type(f))
# <class 'int'>
# <class 'float'>

isinstance(object, type)
Esta función integrada pódese usar para determinar se un obxecto é dun tipo particular. Isto pódese usar para determinar se un número é de tipo enteiro ou de coma flotante.

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

Neste caso, só xulga o tipo, polo que non pode xulgar se un valor de tipo flotante é un número enteiro (cun ​​punto decimal 0) ou non.

f_i = 100.0

print(type(f_i))
# <class 'float'>

print(isinstance(f_i, int))
# False

print(isinstance(f_i, float))
# True

Determina se un número de tipo flotante é un número enteiro (0 decimais):float.is_integer()

Ofrécese o método is_integer() para o tipo flotante, que devolve verdadeiro se o valor é un número enteiro e falso en caso contrario.

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

Por exemplo, unha función que devolve verdadeiro para un número enteiro pódese definir como segue. Por outra banda, un tipo de cadea sería falso.

def is_integer_num(n):
    if isinstance(n, int):
        return True
    if isinstance(n, float):
        return n.is_integer()
    return False

print(is_integer_num(100))
# True

print(is_integer_num(1.23))
# False

print(is_integer_num(100.0))
# True

print(is_integer_num('100'))
# False

Determina se unha cadea numérica é un número enteiro

Se queres determinar que unha cadea de díxitos enteiros tamén é un número enteiro, son posibles as seguintes funcións.

Para os valores que se poden converter ao tipo float con float(), aplícase o método is_integer() despois da conversión ao float e devólvese o resultado.

def is_integer(n):
    try:
        float(n)
    except ValueError:
        return False
    else:
        return float(n).is_integer()

print(is_integer(100))
# True

print(is_integer(100.0))
# True

print(is_integer(1.23))
# False

print(is_integer('100'))
# True

print(is_integer('100.0'))
# True

print(is_integer('1.23'))
# False

print(is_integer('string'))
# False

Consulte o seguinte artigo para obter máis información sobre como converter cadeas en números.

Consulte o seguinte artigo para obter máis información sobre como determinar se unha cadea é un número (incluíndo os números chineses, etc.).

Copied title and URL