Double
Szczawik
Double - typ
Typ liczbowy, 64 bitowy (8 bajtów), zmiennoprzecinkowy
Zakres: (5.0 x 10-324 .. 1.7 x 10308)
Double to typ liczby zmiennoprzecinkowej, zgodnej ze standardem IEEE 754, dla liczb podwojonej precyzji.
Budowa liczby jest następująca:
Znak (Z) | Cecha (C) | Mantysa (M) |
1 bit | 11 bitów | 52 bity |
Bit znaku:
0 oznacza +
1 oznacza -
Przesunięcie cechy o 1023 pozwala na tworzenie cechy dwójkowej z zakresu 2(-1023) .. 2(1024).
Wartości specjalne:
Infinity - nieskończoność dodatnia
NegInfinity - nieskończoność ujemna
NaN - nie liczba (not a number) [na przykład wynik dzielenia przez zero]
Zero w liczbach zmiennoprzecinkowych może posiadać znak + albo -. Różnica wynika z obliczeń, jakie dały taki wynik - jest to wykorzystywane przez niektóre operacje matematyczne.
Typ double posiada bliźniaczy typ o mniejszej precyzji: Single. W środowiskach 32 bitowych, typ Real często jest tożsamy z double.
Dodatkowo istnieje QNaN i SNaN: QNaN to quiet not-a-number, a SNaN to signaling not-a-number. SNaN powoduje wyjątek procesora, gdy następuje próba operacji na nim; QNaN nie powoduje wyjątku, ale wszelkie operacje z QNaN w wyniku dają QNaN.
SNaN nie powstaje w wyniku żadnych operacji na liczbach, można go jednak ustawić ręcznie.
Ponadto:
Nieprawda, to jest wynik działań nieoznaczonych: Inf*0, Inf/Inf, 0/0, log(liczba_ujemna) etc. Dzielenie przez 0 jest bardziej subtelne (stąd też dwie wartości: +0 i -0):
+1 / +0 = +Inf
-1 / +0 = -Inf
+1 / -0 = -Inf
-1 / -0 = +Inf
0 to też wartość specjalna. No i jest +0 i -0.