2.2.4 Typy liczbowe

Istnieją cztery różne typy liczbowe: zwykłe liczby całkowite, długie liczby całkowite, liczby zmiennoprzecinkowe i liczby zespolone. Dodatkowo jako podtyp typu całkowitego został zdefiniowany typ logiczny. Zwykłe liczby całkowite (zwane również po prostu liczbami całkowitymi) są zaimplementowane z wykorzystaniem typu long języka C, który daje przynajmniej 32 bitową precyzję. Długie liczby całkowite mają nieograniczoną precyzję. Liczby zmiennoprzecinkowe są zaimplementowane z wykorzystaniem typu double języka C. Wszelkie założenia dotyczące jego precyzji są całkowicie zależne od platformy na której działa interpreter.  

Liczby zespolone składają się z części rzeczywistej i części urojonej, z których każda jest zaimplementowana z wykorzystaniem typu double języka C. Aby wydobyć każdą z części liczby zespolonej z, należy użyć z.real oraz z.imag.

Liczby są tworzone za pomocą literałów liczbowych oraz jako wynik wbudowanych funkcji i operatorów. Literały liczb całkowitych (w tym literały liczb szesnastkowych i ósemkowych) dają w wyniku zwykłe liczby całkowite, chyba, że ich wartość jest za duża, aby mogła zostać zapisana w zwykłej liczbie całkowitej, w takim przypadku zostanie utworzona długa liczba całkowita. Literały liczb całkowitych z przyrostkiem "L" lub "l" dają w wyniku długie liczby całkowite. (preferowany jest zapis "L", ponieważ "1l" wygląda bardzo podobnie do liczby jedenaście!). Literały liczbowe zawierające kropkę lub symbol wykładniczy dają w wyniku liczbę zmiennoprzecinkową. "J" lub "j" dodane do literału liczbowego daje liczbę zespoloną z częścią rzeczywistą równą zero. Liczbę zespoloną tworzy się za pomocą sumy części rzeczywistej i części urojonej.

 

Python w pełni obsługuje arytmetykę na różnych typach: w przypadku, gdy operator dwuargumentowy posiada operandy różnych typów liczbowych, operand "węższego" typu zostaje przekonwertowany do typu drugiego operandu, to znaczy zwykła liczba całkowita jest węższego typu od długiej liczby całkowitej, która jest węższego typu od liczby zmiennoprzecinkowej, która z kolei jest węższego typu od liczby zespolonej.

Przy porównaniach liczb różnych typów zastosowanie ma ta sama zasada.2.6 W celu wymuszenia konwersji do odpowiedniego typu możemy użyć konstruktorów int(), long(), float() oraz complex().

 

Wszystkie typy liczbowe obsługują następujące operacje, ułożone według rosnącego priorytetu (operacje w tej samej komórce posiadają równy priorytet. Wszystkie operacje liczbowe posiadają wyższy priorytet od operacji porównania):

Operacja  Wynik  Uwagi 
x + y suma x i y  
x - y różnica x i y  
x * y iloczyn x i y  
x / y iloraz x i y (1)
x % y reszta z ilorazu x / y  
-x zanegowane x  
+x x nie zmienione  
abs(x) wartość bezwzględna x  
int(x) x przekonwertowany na liczbę całkowitą (2)
long(x) x przekonwertowany na długą liczbę całkowitą (2)
float(x) x przekonwertowany na liczbę zmiennoprzecinkową  
complex(re,im) liczba zespolona z częścią rzeczywistą re, częścią urojoną im.  
  im domyślnie przyjmowane jest jako zero.  
c.conjugate() conjugate of the complex number c  
divmod(x, y) para (x / y, x % y) (3)
pow(x, y) x do potęgi y  
x ** y x do potęgi y  
  

Uwagi:

(1)
Dla ilorazu liczb całkowitych (zwykłych lub długich) wynik jest zawsze całkowity. Wykonywane jest zaokrąglenie w dół: 1/2 daje 0, (-1)/2 daje -1, 1/(-2) daje -1 a (-1)/(-2) daje 0. Zwróćmy uwagę, że wynik jest typu długiej liczby całkowitej jeśli jeden z operandów jest długą liczbą całkowitą, niezależnie od wartości liczbowej wyniku.  

(2)
Konwersja z liczby zmiennoprzecinkowej do (zwykłej lub długiej) liczby całkowitej może spowodować zaokrąglenie lub obcięcie wartości, tak jak w języku C. Informacje o dobrze zdefiniowanych konwersjach zostały zawarte w opisie funkcji floor() oraz ceil() w module math 

  

(3)
Pełny opis został zawarty w rozdziale 2.1 "Funkcje wbudowane"



... zasada.2.6
W konsekwencji lista [1, 2] jest równa [1.0, 2.0] i podobnie dla krotek.


Podsekcje
Zajrzyj do Informacji na temat tej publikacji... aby pomóc w jej rozwoju.