Flyttalsobjekt¶
-
PyTypeObject PyFloat_Type¶
- En del av Stabil ABI.
Denna instans av
PyTypeObject
representerar Pythons flyttalstyp. Detta är samma objekt somfloat
i Python-lagret.
-
int PyFloat_Check(PyObject *p)¶
Returnerar true om dess argument är ett
PyFloatObject
eller en subtyp avPyFloatObject
. Denna funktion lyckas alltid.
-
int PyFloat_CheckExact(PyObject *p)¶
Returnerar true om dess argument är ett
PyFloatObject
, men inte en subtyp avPyFloatObject
. Denna funktion lyckas alltid.
-
PyObject *PyFloat_FromString(PyObject *str)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Skapa ett
PyFloatObject
-objekt baserat på strängvärdet i str, ellerNULL
om det misslyckas.
-
PyObject *PyFloat_FromDouble(double v)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Skapa ett
PyFloatObject
-objekt från v, ellerNULL
om det misslyckas.
-
double PyFloat_AsDouble(PyObject *pyfloat)¶
- En del av Stabil ABI.
Returnerar en C double-representation av innehållet i pyfloat. Om pyfloat inte är ett Python-objekt med flyttal utan har en
__float__()
-metod, kommer denna metod först att anropas för att konvertera pyfloat till ett flyttal. Om__float__()
inte är definierad faller den tillbaka till__index__()
. Denna metod returnerar-1.0
om den misslyckas, så man bör anropaPyErr_Occurred()
för att kontrollera om det finns fel.Ändrad i version 3.8: Använd
__index__()
om det finns tillgängligt.
-
double PyFloat_AS_DOUBLE(PyObject *pyfloat)¶
Returnerar en C double-representation av innehållet i pyfloat, men utan felkontroll.
-
PyObject *PyFloat_GetInfo(void)¶
- Returnera värde: Ny referens. En del av Stabil ABI.
Returnerar en structseq-instans som innehåller information om precision, minimi- och maximivärden för en float. Det är ett tunt omslag runt headerfilen
float.h
.
-
double PyFloat_GetMax()¶
- En del av Stabil ABI.
Returnera den maximalt representerbara finita flottören DBL_MAX som C double.
-
double PyFloat_GetMin()¶
- En del av Stabil ABI.
Returnera den minsta normaliserade positiva floaten DBL_MIN som C double.
Funktioner för packning och uppackning¶
Funktionerna pack och unpack ger ett effektivt plattformsoberoende sätt att lagra flyttalsvärden som bytesträngar. Pack-rutinerna producerar en bytes-sträng från en C double, och Unpack-rutinerna producerar en C double från en sådan bytes-sträng. Suffixet (2, 4 eller 8) anger antalet bytes i bytes-strängen.
På plattformar som verkar använda IEEE 754-format fungerar dessa funktioner genom att kopiera bitar. På andra plattformar är 2-byteformatet identiskt med IEEE 754 binary16 halvprecisionsformat, 4-byteformatet (32-bit) är identiskt med IEEE 754 binary32 enkelprecisionsformat och 8-byteformatet med IEEE 754 binary64 dubbelprecisionsformat, även om packningen av INF och NaN (om sådana finns på plattformen) inte hanteras korrekt, och försök att packa upp en bytessträng som innehåller en IEEE INF eller NaN kommer att ge upphov till ett undantag.
Observera att NaN-typen kanske inte bevaras på IEEE-plattformar (tysta NaN blir tysta), t.ex. på x86-system i 32-bitarsläge.
På icke-IEEE-plattformar med högre precision eller större dynamiskt omfång än IEEE 754 stöder kan inte alla värden packas; på icke-IEEE-plattformar med lägre precision eller mindre dynamiskt omfång kan inte alla värden packas upp. Vad som händer i sådana fall är delvis oavsiktligt (tyvärr).
Tillagd i version 3.11.
Packa funktioner¶
Packrutinerna skriver 2, 4 eller 8 byte, med början vid p. le är ett int-argument, icke-noll om du vill ha bytessträngen i little-endian-format (exponent sist, vid p+1
, p+3
, eller p+6
p+7
), noll om du vill ha big-endian-format (exponent först, vid p). Konstanten PY_BIG_ENDIAN
kan användas för att använda den inbyggda endian: den är lika med 1
på big endian-processor, eller 0
på little endian-processor.
Returvärde: 0
om allt är OK, -1
om fel (och ett undantag anges, troligen OverflowError
).
Det finns två problem på plattformar som inte är IEEE:
Vad detta gör är odefinierat om x är ett NaN eller oändligt.
-0.0
och+0.0
ger samma bytessträng.
-
int PyFloat_Pack2(double x, char *p, int le)¶
Packa en C-dubbel som IEEE 754 binär16 halvprecisionsformat.
-
int PyFloat_Pack4(double x, char *p, int le)¶
Packa en C-dubbel i formatet IEEE 754 binary32 med enkel precision.
-
int PyFloat_Pack8(double x, char *p, int le)¶
Packa en C-dubbel i IEEE 754 binary64 dubbelprecisionsformat.
Packa upp funktioner¶
Uppackningsrutinerna läser 2, 4 eller 8 byte, med början vid p. le är ett int-argument, icke-noll om bytessträngen är i little-endian-format (exponent sist, vid p+1
, p+3
eller p+6
och p+7
), noll om big-endian (exponent först, vid p). Konstanten PY_BIG_ENDIAN
kan användas för att använda den ursprungliga endian: den är lika med 1
på big endian-processor, eller 0
på little endian-processor.
Returvärde: Den uppackade dubbelteckningen. Vid fel är detta -1.0
och PyErr_Occurred()
är true (och ett undantag anges, troligen OverflowError
).
Observera att på en icke-IEEE-plattform kommer detta att vägra att packa upp en bytessträng som representerar ett NaN eller oändlighet.
-
double PyFloat_Unpack2(const char *p, int le)¶
Packa upp IEEE 754 binary16 halvprecisionsformat som en C-dubbel.
-
double PyFloat_Unpack4(const char *p, int le)¶
Packa upp IEEE 754 binary32-formatet med enkel precision som en C-dubbel.
-
double PyFloat_Unpack8(const char *p, int le)¶
Packa upp IEEE 754 binary64 dubbelprecisionsformat som en C-dubbel.