Определяне дали дадено число е цяло или десетично в Python

Бизнес

Определяне дали дадено число е цяло или десетично в Python.

Следните случаи са обяснени с примерни кодове.

  • Определя дали дадено число е цяло число int или число с плаваща запетая float:isinstance()
  • Определя дали дадено число от тип float е цяло число (0 знака след десетичната запетая):float.is_integer()
  • Определя дали даден низ от числа е цяло число

За получаване на целочислените и десетичните стойности на дадено десетично число вижте следната статия.

Вижте следната статия за информация относно определянето на това дали даден низ е число (включително китайски цифри и т.н.), а не дали е цяло или десетично число.

Определя дали дадено число е тип цяло число или тип с плаваща запетая: isinstance()

Типът на даден обект може да бъде получен с вградената функция type().

i = 100
f = 1.23

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

isinstance(object, type)
Тази вградена функция може да се използва, за да се определи дали даден обект е от определен тип. Тя може да се използва за определяне дали дадено число е от тип цяло число или от тип с плаваща запетая.

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

В този случай той преценява само типа, така че не може да прецени дали стойност от тип float е цяло число (с десетична запетая 0) или не.

f_i = 100.0

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

print(isinstance(f_i, int))
# False

print(isinstance(f_i, float))
# True

Определя дали дадено число от тип float е цяло число (0 знака след десетичната запетая): float.is_integer()

За типа float е предвиден методът is_integer(), който връща true, ако стойността е цяло число, и false в противен случай.

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

Например функция, която връща true за целочислено число, може да бъде дефинирана по следния начин.От друга страна, за тип string ще бъде 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

Определя дали даден низ от числа е цяло число

Ако искате да определите, че даден низ от цели числа също е цяло число, можете да използвате следните функции.

За стойности, които могат да бъдат преобразувани в тип float с float(), методът is_integer() се прилага след преобразуването в float и се връща резултатът.

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

Вижте следната статия за подробности относно преобразуването на низове в числа.

Вижте следната статия за подробности относно определянето на това дали даден низ е число (включително китайски цифри и т.н.).