Menentukan sama ada nombor ialah integer atau perpuluhan dalam Python

Perniagaan

Tentukan sama ada nombor ialah integer atau perpuluhan dalam Python.

Kes berikut dijelaskan dengan kod sampel.

  • Menentukan sama ada nombor ialah integer int atau floating-point float:isinstance()
  • Menentukan sama ada nombor jenis apungan ialah integer (0 tempat perpuluhan):float.is_integer()
  • Menentukan sama ada rentetan nombor ialah integer

Untuk mendapatkan nilai integer dan perpuluhan nombor perpuluhan, lihat artikel berikut.

Lihat artikel berikut untuk mendapatkan maklumat tentang menentukan sama ada rentetan ialah nombor (termasuk angka Cina, dll.) dan bukannya sama ada ia adalah integer atau perpuluhan.

Menentukan sama ada nombor adalah jenis integer atau titik terapung:isinstance()

Jenis objek boleh diperoleh dengan jenis fungsi terbina dalam().

i = 100
f = 1.23

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

isinstance(object, type)
Fungsi terbina dalam ini boleh digunakan untuk menentukan sama ada objek adalah daripada jenis tertentu. Ini boleh digunakan untuk menentukan sama ada nombor ialah jenis integer atau titik terapung.

print(isinstance(i, int))
# True

print(isinstance(i, float))
# False

print(isinstance(f, int))
# False

print(isinstance(f, float))
# True

Dalam kes ini, ia hanya menilai jenis, jadi ia tidak boleh menilai sama ada nilai jenis apungan ialah integer (dengan titik perpuluhan 0) atau tidak.

f_i = 100.0

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

print(isinstance(f_i, int))
# False

print(isinstance(f_i, float))
# True

Menentukan sama ada nombor jenis apungan ialah integer (0 tempat perpuluhan):float.is_integer()

Kaedah is_integer() disediakan untuk jenis apungan, yang mengembalikan benar jika nilainya adalah integer dan palsu sebaliknya.

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

Sebagai contoh, fungsi yang mengembalikan benar untuk nombor integer boleh ditakrifkan seperti berikut Sebaliknya, jenis rentetan adalah palsu.

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

Menentukan sama ada rentetan nombor ialah integer

Jika anda ingin menentukan bahawa rentetan digit integer juga merupakan integer, fungsi berikut adalah mungkin.

Untuk nilai yang boleh ditukar kepada jenis float dengan float(), kaedah is_integer() digunakan selepas penukaran kepada float dan hasilnya dikembalikan.

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

Lihat artikel berikut untuk butiran tentang menukar rentetan kepada nombor.

Lihat artikel berikut untuk mendapatkan butiran tentang menentukan sama ada rentetan ialah nombor (termasuk angka Cina, dsb.).