C ไลบรารี - <float.h>
float.hไฟล์ส่วนหัวของ C Standard Library ประกอบด้วยชุดค่าคงที่ขึ้นอยู่กับแพลตฟอร์มต่างๆที่เกี่ยวข้องกับค่าทศนิยม ค่าคงที่เหล่านี้เสนอโดย ANSI C ซึ่งช่วยให้สามารถสร้างโปรแกรมแบบพกพาได้มากขึ้น ก่อนที่จะตรวจสอบค่าคงที่ทั้งหมดควรทำความเข้าใจว่าจำนวนทศนิยมประกอบด้วยสี่องค์ประกอบต่อไปนี้ -
ซีเนียร์ | คำอธิบายส่วนประกอบและส่วนประกอบ |
---|---|
1 | S ลงชื่อ (+/-) |
2 | b ฐานหรือรัศมีของการแทนเลขยกกำลัง 2 สำหรับเลขฐานสอง 10 สำหรับฐานสิบ 16 สำหรับเลขฐานสิบหกและอื่น ๆ ... |
3 | e เลขชี้กำลังเป็นจำนวนเต็มระหว่างค่าต่ำสุด emin และสูงสุด emax. |
4 | p ความแม่นยำจำนวนหลักฐาน b ในนัยสำคัญ |
จากองค์ประกอบทั้ง 4 ด้านบนจุดลอยตัวจะมีค่าดังนี้ -
floating-point = ( S ) p x be
or
floating-point = (+/-) precision x baseexponent
แมโครไลบรารี
ค่าต่อไปนี้เป็นค่าเฉพาะการนำไปใช้งานและกำหนดด้วย #define directive แต่ค่าเหล่านี้ต้องไม่ต่ำกว่าที่ระบุไว้ที่นี่ โปรดทราบว่าในทุกกรณี FLT หมายถึงประเภทfloat, DBL หมายถึง doubleและ LDBL อ้างถึง long double.
ซีเนียร์ | มาโครและคำอธิบาย |
---|---|
1 | FLT_ROUNDS กำหนดโหมดการปัดเศษสำหรับการเพิ่มจุดลอยตัวและสามารถมีค่าใด ๆ ต่อไปนี้ -
|
2 | FLT_RADIX 2 สิ่งนี้กำหนดการแสดงเลขฐานของเลขชี้กำลัง ฐาน -2 เป็นเลขฐานสองฐาน 10 คือการแทนทศนิยมปกติฐาน -16 คือฐานสิบหก |
3 | FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG มาโครเหล่านี้กำหนดจำนวนหลักในตัวเลข (ในฐาน FLT_RADIX) |
4 | FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 มาโครเหล่านี้กำหนดจำนวนหลักทศนิยมจำนวนสูงสุด (ฐาน -10) ที่สามารถแสดงโดยไม่มีการเปลี่ยนแปลงหลังจากการปัดเศษ |
5 | FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP มาโครเหล่านี้กำหนดค่าจำนวนเต็มลบขั้นต่ำสำหรับเลขชี้กำลังใน FLT_RADIX พื้นฐาน |
6 | FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 มาโครเหล่านี้กำหนดค่าจำนวนเต็มลบขั้นต่ำสำหรับเลขชี้กำลังในฐาน 10 |
7 | FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP มาโครเหล่านี้กำหนดค่าจำนวนเต็มสูงสุดสำหรับเลขชี้กำลังใน FLT_RADIX พื้นฐาน |
8 | FLT_MAX_10_EXP +37 DBL_MAX_10_EXP +37 LDBL_MAX_10_EXP +37 มาโครเหล่านี้กำหนดค่าจำนวนเต็มสูงสุดสำหรับเลขชี้กำลังในฐาน 10 |
9 | FLT_MAX 1E+37 DBL_MAX 1E+37 LDBL_MAX 1E+37 มาโครเหล่านี้กำหนดค่าทศนิยมที่ จำกัด สูงสุด |
10 | FLT_EPSILON 1E-5 DBL_EPSILON 1E-9 LDBL_EPSILON 1E-9 มาโครเหล่านี้กำหนดตัวเลขที่มีนัยสำคัญน้อยที่สุดที่แสดงได้ |
11 | FLT_MIN 1E-37 DBL_MIN 1E-37 LDBL_MIN 1E-37 มาโครเหล่านี้กำหนดค่าทศนิยมขั้นต่ำ |
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงการใช้ค่าคงที่บางส่วนที่กำหนดไว้ในไฟล์ float.h
#include <stdio.h>
#include <float.h>
int main () {
printf("The maximum value of float = %.10e\n", FLT_MAX);
printf("The minimum value of float = %.10e\n", FLT_MIN);
printf("The number of digits in the number = %.10e\n", FLT_MANT_DIG);
}
ให้เรารวบรวมและเรียกใช้โปรแกรมข้างต้นซึ่งจะให้ผลลัพธ์ดังต่อไปนี้ -
The maximum value of float = 3.4028234664e+38
The minimum value of float = 1.1754943508e-38
The number of digits in the number = 7.2996655210e-312