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 -

  • -1 - belirlenemez
  • 0 - sıfıra doğru
  • 1 - en yakın
  • 2 - pozitif sonsuzluğa doğru
  • 3 - negatif sonsuzluğa doğru
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