Luvun kokonaisluvun tai desimaaliluvun määrittäminen Pythonissa

liiketoiminta

Määritä, onko luku kokonaisluku vai desimaaliluku Pythonissa.

Seuraavat tapaukset selitetään esimerkkikoodien avulla.

  • Määrittää, onko luku kokonaisluku int vai liukuluku float.:isinstance()
  • Määrittää, onko float-tyyppinen luku kokonaisluku (0 desimaalia).:float.is_integer()
  • Määrittää, onko lukujono kokonaisluku.

Jos haluat saada desimaaliluvun kokonais- ja desimaaliarvot, katso seuraava artikkeli.

Seuraavassa artikkelissa on tietoja siitä, miten määritetään, onko merkkijono luku (mukaan lukien kiinalaiset numerot jne.) eikä kokonais- tai desimaaliluku.

Määrittää, onko luku kokonaisluku- vai liukulukutyyppinen.: isinstance()

Olion tyyppi saadaan sisäänrakennetulla funktiolla type().

i = 100
f = 1.23

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

isinstance(object, type)
Tätä sisäänrakennettua funktiota voidaan käyttää sen määrittämiseen, onko objekti tietyn tyyppinen. Tätä voidaan käyttää sen määrittämiseen, onko luku kokonaisluku- vai liukulukutyyppiä.

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

Tässä tapauksessa se arvioi vain tyypin, joten se ei voi arvioida, onko float-tyyppinen arvo kokonaisluku (jonka desimaalipiste on 0) vai ei.

f_i = 100.0

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

print(isinstance(f_i, int))
# False

print(isinstance(f_i, float))
# True

Määrittää, onko float-tyyppinen luku kokonaisluku (0 desimaalia).: float.is_integer()

Float-tyypille on annettu is_integer()-metodi, joka palauttaa arvon true, jos arvo on kokonaisluku, ja false, jos arvo on kokonaisluku.

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

Esimerkiksi funktio, joka palauttaa totuuden kokonaisluvulle, voidaan määritellä seuraavasti Toisaalta merkkijonotyyppi olisi 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

Määrittää, onko lukujono kokonaisluku.

Jos haluat määrittää, että kokonaislukujen merkkijono on myös kokonaisluku, seuraavat funktiot ovat mahdollisia.

Arvoihin, jotka voidaan muuntaa float-tyyppisiksi float()-menetelmällä, sovelletaan is_integer()-menetelmää float-tyyppiseksi muuntamisen jälkeen ja tulos palautetaan.

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

Katso seuraavasta artikkelista lisätietoja merkkijonojen muuntamisesta numeroiksi.

Katso seuraavasta artikkelista lisätietoja siitä, miten määritetään, onko merkkijono numero (mukaan lukien kiinalaiset numerot jne.).