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.
- RELATED:Luvun kokonaisluku- ja desimaaliosien hakeminen samanaikaisesti math.modf-ohjelmalla Pythonissa
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.).