Určení, zda je číslo celé nebo desetinné v jazyce Python

Podnikání

Určení, zda je číslo v jazyce Python celé nebo desetinné.

Následující případy jsou vysvětleny pomocí ukázkových kódů.

  • Určuje, zda je číslo celé int nebo float s plovoucí desetinnou čárkou.:isinstance()
  • Určuje, zda je číslo typu float celé číslo (0 desetinných míst).:float.is_integer()
  • Určí, zda je číselný řetězec celé číslo.

Informace o celočíselných a desetinných hodnotách desetinného čísla naleznete v následujícím článku.

Informace o tom, zda je řetězec číslem (včetně čínských číslic atd.), a nikoli celým číslem nebo desetinným číslem, naleznete v následujícím článku.

Určuje, zda je číslo typu celé číslo nebo číslo s pohyblivou řádovou čárkou.: isinstance()

Typ objektu lze zjistit pomocí vestavěné funkce type().

i = 100
f = 1.23

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

isinstance(object, type)
Tuto vestavěnou funkci lze použít k určení, zda je objekt určitého typu. Lze ji použít k určení, zda je číslo typu integer nebo floating point.

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

V tomto případě posuzuje pouze typ, takže nemůže posoudit, zda je hodnota typu float celé číslo (s desetinnou čárkou 0), nebo ne.

f_i = 100.0

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

print(isinstance(f_i, int))
# False

print(isinstance(f_i, float))
# True

Určuje, zda je číslo typu float celé číslo (0 desetinných míst).: float.is_integer()

Pro typ float je k dispozici metoda is_integer(), která vrací true, pokud je hodnota celé číslo, a false v opačném případě.

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

Například funkci, která vrací true pro celé číslo, lze definovat takto Naopak pro řetězcový typ by vrátila false.

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

Určí, zda je číselný řetězec celé číslo.

Pokud chcete určit, že řetězec celých číslic je také celé číslo, můžete použít následující funkce.

U hodnot, které lze převést na typ float pomocí funkce float(), se po převodu na float použije metoda is_integer() a vrátí se výsledek.

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

Podrobnosti o převodu řetězců na čísla najdete v následujícím článku.

Podrobnosti o určování, zda je řetězec číslo (včetně čínských číslic atd.), najdete v následujícím článku.