C Kitaplığı - <float.h>
float.hC Standard Library'nin başlık dosyası, kayan nokta değerleriyle ilgili çeşitli platforma bağlı sabitler içerir. Bu sabitler ANSI C tarafından önerilmiştir. Daha taşınabilir programlar yapmaya izin verirler. Tüm sabitleri kontrol etmeden önce, kayan noktalı sayının aşağıdaki dört unsurdan oluştuğunu anlamak iyidir:
Sr.No. | Bileşen ve Bileşen Tanımı |
---|---|
1 | S işaret (+/-) |
2 | b üs temsilinin tabanı veya tabanı, ikili için 2, ondalık için 10, onaltılık için 16, vb. |
3 | e üs, minimum arasında bir tam sayı emin ve maksimum emax. |
4 | p duyarlılık, anlamdaki baz-b basamaklarının sayısı. |
Yukarıdaki 4 bileşene dayanarak, bir kayan noktanın değeri aşağıdaki gibi olacaktır -
floating-point = ( S ) p x be
or
floating-point = (+/-) precision x baseexponent
Kitaplık Makroları
Aşağıdaki değerler uygulamaya özgüdür ve #define yönergesi ile tanımlanmıştır, ancak bu değerler burada verilenden daha düşük olamaz. Her durumda FLT'nin yazı anlamına geldiğini unutmayın.floatDBL, doubleve LDBL, long double.
Sr.No. | Makro ve Açıklama |
---|---|
1 | FLT_ROUNDS Kayan nokta toplama için yuvarlama modunu tanımlar ve aşağıdaki değerlerden herhangi birine sahip olabilir -
|
2 | FLT_RADIX 2 Bu, üssün taban radix temsilini tanımlar. Bir taban-2 ikilidir, taban-10 normal ondalık gösterimdir, taban-16 Hex'dir. |
3 | FLT_MANT_DIG DBL_MANT_DIG LDBL_MANT_DIG Bu makrolar, sayıdaki (FLT_RADIX tabanında) basamak sayısını tanımlar. |
4 | FLT_DIG 6 DBL_DIG 10 LDBL_DIG 10 Bu makrolar, yuvarlamadan sonra değişiklik yapılmadan gösterilebilecek maksimum ondalık basamak sayısını (taban-10) tanımlar. |
5 | FLT_MIN_EXP DBL_MIN_EXP LDBL_MIN_EXP Bu makrolar, FLT_RADIX tabanındaki bir üs için minimum negatif tamsayı değerini tanımlar. |
6 | FLT_MIN_10_EXP -37 DBL_MIN_10_EXP -37 LDBL_MIN_10_EXP -37 Bu makrolar, 10 tabanındaki bir üs için minimum negatif tamsayı değerini tanımlar. |
7 | FLT_MAX_EXP DBL_MAX_EXP LDBL_MAX_EXP Bu makrolar, FLT_RADIX tabanındaki bir üs için maksimum tamsayı değerini tanımlar. |
8 | FLT_MAX_10_EXP +37 DBL_MAX_10_EXP +37 LDBL_MAX_10_EXP +37 Bu makrolar, 10 tabanındaki bir üs için maksimum tamsayı değerini tanımlar. |
9 | FLT_MAX 1E+37 DBL_MAX 1E+37 LDBL_MAX 1E+37 Bu makrolar, maksimum sonlu kayan nokta değerini tanımlar. |
10 | FLT_EPSILON 1E-5 DBL_EPSILON 1E-9 LDBL_EPSILON 1E-9 Bu makrolar, gösterilebilir en az anlamlı basamağı tanımlar. |
11 | FLT_MIN 1E-37 DBL_MIN 1E-37 LDBL_MIN 1E-37 Bu makrolar minimum kayan nokta değerlerini tanımlar. |
Misal
Aşağıdaki örnek float.h dosyasında tanımlanan sabitlerin birkaçının kullanımını gösterir.
#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);
}
Aşağıdaki sonucu verecek olan yukarıdaki programı derleyip çalıştıralım -
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