Determinar se um número é um número inteiro ou decimal em Python

O negócio

Determinar se um número é um inteiro ou um decimal em Python.

Os casos seguintes são explicados com códigos de amostra.

  • Determina se um número é um int inteiro ou um floating-point flutuante:isinstance()
  • Determina se um número de tipo flutuador é um número inteiro (0 casas decimais):float.is_integer()
  • Determina se uma cadeia de números é um número inteiro

Para obter o número inteiro e os valores decimais de um número decimal, ver o artigo seguinte.

Ver o artigo seguinte para informações sobre como determinar se uma cadeia é um número (incluindo numerais chineses, etc.) em vez de um número inteiro ou decimal.

Determina se um número é um número inteiro ou tipo de ponto flutuante: isinstance()

O tipo de um objecto pode ser obtido com o tipo de função incorporada().

i = 100
f = 1.23

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

isinstance(object, type)
Esta função integrada pode ser utilizada para determinar se um objecto é de um tipo particular. Isto pode ser usado para determinar se um número é um tipo inteiro ou de ponto flutuante.

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

Neste caso, apenas julga o tipo, pelo que não pode julgar se um valor do tipo flutuador é um número inteiro (com um ponto decimal de 0) ou não.

f_i = 100.0

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

print(isinstance(f_i, int))
# False

print(isinstance(f_i, float))
# True

Determina se um número de tipo flutuador é um número inteiro (0 casas decimais): float.is_integer()

O método is_integer() é fornecido para o tipo de flutuador, que retorna verdadeiro se o valor for um número inteiro e falso caso contrário.

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

Por exemplo, uma função que retorna verdadeiro para um número inteiro pode ser definida da seguinte forma Por outro lado, um tipo de string seria 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 uma cadeia de números é um número inteiro

Se quiser determinar que uma sequência de dígitos inteiros é também um número inteiro, as seguintes funções são possíveis.

Para valores que podem ser convertidos em tipo flutuante com float(), o método is_integer() é aplicado após a conversão em float e o resultado é devolvido.

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

Ver o artigo seguinte para detalhes sobre a conversão de cordas em números.

Ver o artigo seguinte para detalhes sobre como determinar se uma cadeia é um número (incluindo numerais chineses, etc.).

Copied title and URL