3 กุมภาพันธ์ 2559

Published 2/03/2559 by with 0 comment

ค่า NaN ในภาษาไพทอน Python

สวัสดีผู้อ่านทุกท่านครับ บทความเป็นเรื่องเกี่ยวกับค่า NaN ในภาษาไพทอน Python ครับ
ค่า NaN คือ ค่าอะไร ?
จากโจทย์ทางคณิตศาสตร์

ตัวอย่างเช่น 1/0 ทางหลักคณิตศาสตร์ไม่มีนิยาม (อ่านรายละเอียดได้จาก - วิกิพีเดีย https://en.wikipedia.org/wiki/Division_by_zero) แต่ในทางการเขียนโปรแกรมคอมพิวเตอร์มีการกำหนดให้ค่านั้นเป็นค่า NaN ตามมาตรฐาน IEEE 754 (https://en.wikipedia.org/wiki/NaN)
ดังนั้น ค่า NaN คือ ค่าที่ผิดพลาดทางหลักคณิตศาสตร์ ไม่ใช่ตัวเลข และค่า NaN ไม่มีค่าเท่ากับค่าใดเลย แม้แต่ค่า NaN ของตัวมันเอง


ในภาษาไพทอน (Python) ภาษาไพทอนเองไม่ยอมให้เกิดค่า NaN ขึ้นได้จากการ / ในโค้ด ตัวอย่างเช่น

>>> 1/0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

ภาษาไพทอนจะขึ้นข้อผิดพลาดว่าไม่สามารถหารด้วยศูนย์ได้ ภาษาไพทอนจึงไม่ยอมให้มีค่า NaN เกิดขึ้นมาได้ ยกเว้น เรากำหนดตัวแปรให้มีค่า NaN ขึ้นมา

a = float('NaN')
print(a) #แสดงค่า nan ของตัวแปร
print(a == a) # ตรวจสอบการเท่ากันของค่า nan กับค่า nan ของตัวมันเอง

ผลลัพธ์
nan
False

จะเห็นได้ว่า ค่า NaN ในภาษาไพทอน ไม่เท่ากับค่าใดแม้แต่ตัวมันเอง

การตรวจสอบว่าเป็นค่า NaN หรือไม่ในภาษาไพทอน


สามารถใช้ไลบรารี math (รองรับตั้งแต่ Python 2.6 ขึ้นไป) ในภาษาไพทอนตรวจสอบว่าค่าหรือตัวแปรนั้นเป็นค่า NaN หรือไม่ ได้โดยใช้คำสั่ง math.isnan() ถ้าเป็นค่า NaN จะคืนค่า True
ตัวอย่างเช่น

import math
x=float('nan')
print(math.isnan(x))

ผลลัพธ์
True

ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)