ในบทความนี้ เราจะพูดถึงการทำงาน ไวยากรณ์ และตัวอย่างของฟังก์ชัน isnormal() ใน C++ STL
isnormal() เป็นฟังก์ชันใน header <cmath> ใช้ตรวจสอบว่าตัวเลขที่กำหนดเป็น normal number หรือไม่
Normal Number คืออะไร?
จำนวนจริงจะเป็น normal number ถ้าค่า base ไม่เป็นศูนย์ ไม่เป็นอนันต์ (infinity) ไม่เป็น NaN และไม่เป็น subnormal
ไวยากรณ์
bool isnormal(float num);
พารามิเตอร์
ฟังก์ชันรับพารามิเตอร์ 1 ตัว คือ num ชนิด float
ค่าที่คืน
คืนค่า 0 หรือ 1: 1 หากเป็น normal number, 0 หากไม่ใช่
ตัวอย่าง
Input: isnormal(5.0); Output: 1 Input: isnormal(0.0); Output: 0
ตัวอย่างโค้ด
#include <bits/stdc++.h>
using namespace std;
int main() {
// For Float
cout << "\nFor Float : ";
float var_1 = 5.89F;
cout << "check for isnormal(5.89F) : " << isnormal(var_1);
var_1 = 0.0F;
cout << "\ncheck for isnormal(0.0F) : " << isnormal(var_1);
var_1 = 2.2F;
cout << "\ncheck for isnormal(2.2F/0.0F) : " << isnormal(var_1/0.0F);
// For Double
cout << "\n\nFor Double : ";
double var_2 = 5.89;
cout << "check for isnormal(5.89) : " << isnormal(var_2);
var_2 = 0.0;
cout << "\ncheck for isnormal(0.0) : " << isnormal(var_2);
var_2 = 2.2;
cout << "\ncheck for isnormal(2.2/0.0) : " << isnormal(var_2/0.0);
// For Long Double
cout << "\n\nFor Long Double : ";
long double var_3 = 5.89;
cout << "check for isnormal(5.89) : " << isnormal(var_3);
var_3 = 0.0;
cout << "\ncheck for isnormal(0.0) : " << isnormal(var_3);
var_3 = 2.2;
cout << "\ncheck for isnormal(2.2/0.0) : " << isnormal(var_3/0.0);
return 0;
}
เอาต์พุต
For Float : check for isnormal(5.89F) : 1 check for isnormal(0.0F) : 0 check for isnormal(2.2F/0.0F) : 0 For Double : check for isnormal(5.89) : 1 check for isnormal(0.0) : 0 check for isnormal(2.2/0.0) : 0 For Long Double : check for isnormal(5.89) : 1 check for isnormal(0.0) : 0 check for isnormal(2.2/0.0) : 0
คำอธิบาย
- ค่าปกติ (non-zero, finite) คืน 1 (true)
- ศูนย์ (0.0) คืน 0 (false) เพราะเป็น subnormal
- อนันต์ (infinity) จากการหารด้วยศูนย์ คืน 0 (false)
- NaN ก็คืน 0 (false) เช่นกัน