ค่าสูงสุดและต่ำสุดของตัวแปร Real ในภาษา C

Advertisements

เราสามารถหาค่าสูงสุดและต่ำสุดของตัวแปร ตัวเลขจำนวนจริง (Real) แต่ละชนิดในภาษา C ได้จากค่า Define ที่อยู่ใน ไฟล์ float.h

ตารางด้านล่างนี้แสดง Define ที่ใช้สำหรับกำหนดค่าสูงสุด (Max) หรือต่ำสุด (Min) และความละเอียด (Precision)

ซึ่งสามารถนำเอาค่า Define มา print แสดงค่าได้ โดย Include ไฟล์ float.h ดัง Source code ตัวอย่าง

#include <stdio.h> /* For command line input and output */
#include <float.h> /* For limits on floating-point types */

int main(void)
{
    printf("min float is %.6e\n", FLT_MIN);
    printf("max float is %.6e\n", FLT_MAX);
    printf("float provide %u decimal digits precision.\n\n", FLT_DIG);

    printf("min double is %.15e\n",DBL_MIN);
    printf("max double is %.15e\n", DBL_MAX);
    printf("double provide %u decimal digits precision.\n\n", DBL_DIG);

    printf("min long double is %.18Le\n", LDBL_MIN);
    printf("max long double is %.18Le\n", LDBL_MAX);
    printf("long double provide %u decimal digits precision.\n",LDBL_DIG);

    return 0;
}

จะได้ผลลัพธ์ดังนี้ (Windows 7 32 bit, gcc 4.9.2)

สำหรับใครที่ลองเอา Code ไปรันแล้วเจอค่าขึ้น -1.#QNAN e+000 ดังรูป

วิธีแก้ไขก็คือเวลาที่เรา Compile ให้กำหนด standard ด้วย เช่น –std=c99 เวลา compile กับ gcc

สำหรับคนที่ใช้ Code Block ก็ให้เข้าไป Setting ค่าที่ setting complier ให้ ติ๊กถูก “Have gcc follow the 1999 ISO C language standard [-std=c99]”

Advertisements