Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชัน isunordered() ใน C++

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 เสมอ