isunordered() คืออะไร?
isunordered() เป็นฟังก์ชันในตัวใน C++ ซึ่งนิยามในไฟล์หัวข้อ <cmath> ฟังก์ชันนี้ตรวจสอบว่าตัวเลขจุดลอยตัวสองตัว เป็น NaN (Not a Number) หรือไม่** หากทั้งสองตัวหรือตัวใดตัวหนึ่งเป็น NaN จะส่งคืน 1 (true) มิฉะนั้นส่งคืน 0 (false)
การเปรียบเทียบปกติกับ NaN จะส่งคืน false เสมอ (แม้แต่ NaN == NaN ก็เป็น false) ดังนั้น isunordered() จึงจำเป็นสำหรับตรวจสอบค่า NaN ก่อนทำการเปรียบเทียบ
ไวยากรณ์ (Syntax)
bool isunordered(float x, float y); bool isunordered(double x, double y); bool isunordered(long double x, long double y);
ฟังก์ชันรับพารามิเตอร์สองตัวแบบจุดลอยตัว เพื่อเปรียบเทียบและตรวจสอบว่าตัวใดตัวหนึ่งเป็น NaN หรือไม่
ค่าที่ส่งคืน (Return Value)
ส่งคืนค่าบูลีน: 1 (true) หากตัวใดตัวหนึ่งเป็น NaN, 0 (false) หากทั้งคู่ไม่ใช่ NaN
ตัวอย่างที่ 1: ตรวจสอบ sqrt(-1.0) ที่ให้ NaN
#include <cmath>
#include <iostream>
using namespace std;
int main() {
float a = -1.0f;
float c = sqrt(a); // sqrt(-1) = NaN
cout << "c = " << c << endl; // พิมพ์ค่า c (จะได้ -nan หรือ nan)
cout << "isunordered(c, 0.0) = " << isunordered(c, 0.0f) << endl; // ตรวจสอบ c หรือ 0.0 เป็น NaN
return 0;
}
ผลลัพธ์ (Output)
c = -nan isunordered(c, 0.0) = 1
ตัวอย่างที่ 2: ตรวจสอบค่าปกติ (ไม่ใช่ NaN)
#include <cmath>
#include <iostream>
using namespace std;
int main() {
cout << "isunordered(0.0, -1.0) = " << isunordered(0.0, -1.0) << endl;
return 0;
}
ผลลัพธ์ (Output)
isunordered(0.0, -1.0) = 0
สรุป: isunordered() มีประโยชน์เมื่อต้องการตรวจสอบค่า NaN ก่อนทำการเปรียบเทียบหรือคำนวณต่อ เพื่อป้องกันพฤติกรรมที่ไม่คาดคิด เนื่องจากการเปรียบเทียบใดๆ กับ NaN จะให้ผลลัพธ์เป็น false เสมอ