การพิจารณาว่าตัวเลขเป็นจำนวนเต็มหรือทศนิยมใน Python

ธุรกิจ

ตรวจสอบว่าตัวเลขเป็นจำนวนเต็มหรือทศนิยมใน Python หรือไม่

กรณีต่อไปนี้จะอธิบายด้วยโค้ดตัวอย่าง

  • กำหนดว่าตัวเลขเป็นจำนวนเต็มหรือจำนวนเต็มทศนิยม:isinstance()
  • กำหนดว่าจำนวนประเภททศนิยมเป็นจำนวนเต็ม (ทศนิยม 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

ในกรณีนี้ จะตัดสินเฉพาะประเภท ดังนั้นจึงไม่สามารถตัดสินว่าค่าประเภททศนิยมเป็นจำนวนเต็ม (ที่มีจุดทศนิยม 0) หรือไม่

f_i = 100.0

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

print(isinstance(f_i, int))
# False

print(isinstance(f_i, float))
# True

กำหนดว่าจำนวนประเภททศนิยมเป็นจำนวนเต็ม (ทศนิยม 0 ตำแหน่ง) หรือไม่:float.is_integer()

is_integer() มีให้สำหรับประเภท float ซึ่งจะคืนค่า จริง หากค่าเป็นจำนวนเต็มและเป็นเท็จ

f = 1.23

print(f.is_integer())
# False

f_i = 100.0

print(f_i.is_integer())
# True

ตัวอย่างเช่น ฟังก์ชันที่คืนค่า จริง สำหรับจำนวนเต็มสามารถกำหนดได้ดังนี้ ในทางกลับกัน ประเภทสตริงจะเป็นเท็จ

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

ดูบทความต่อไปนี้สำหรับรายละเอียดเกี่ยวกับการแปลงสตริงเป็นตัวเลข

ดูบทความต่อไปนี้สำหรับรายละเอียดเกี่ยวกับการพิจารณาว่าสตริงเป็นตัวเลขหรือไม่ (รวมถึงตัวเลขจีน เป็นต้น)