Gleitkommaobjekte¶
-
PyTypeObject PyFloat_Type¶
- Teil der Stable ABI.
Diese Instanz von
PyTypeObjectrepräsentiert den Python-Gleitkommatyp. Dies ist dasselbe Objekt wiefloatin der Python-Schicht.
-
int PyFloat_Check(PyObject *p)¶
Gibt wahr zurück, wenn das Argument ein
PyFloatObjectoder ein Untertyp vonPyFloatObjectist. Diese Funktion ist immer erfolgreich.
-
int PyFloat_CheckExact(PyObject *p)¶
Gibt wahr zurück, wenn das Argument ein
PyFloatObjectist, aber kein Untertyp vonPyFloatObject. Diese Funktion ist immer erfolgreich.
-
PyObject *PyFloat_FromString(PyObject *str)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Erzeugt ein
PyFloatObject-Objekt basierend auf dem Zeichenkettenwert in str, oderNULLim Fehlerfall.
-
PyObject *PyFloat_FromDouble(double v)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Erzeugt ein
PyFloatObject-Objekt aus v, oderNULLim Fehlerfall.
-
double PyFloat_AsDouble(PyObject *pyfloat)¶
- Teil der Stable ABI.
Gibt eine C double-Repräsentation des Inhalts von pyfloat zurück. Wenn pyfloat kein Python-Gleitkommaobjekt ist, aber eine
__float__()-Methode hat, wird diese Methode zuerst aufgerufen, um pyfloat in einen Float zu konvertieren. Wenn__float__()nicht definiert ist, fällt sie auf__index__()zurück. Diese Methode gibt im Fehlerfall-1.0zurück, daher sollte manPyErr_Occurred()aufrufen, um Fehler zu prüfen.Geändert in Version 3.8: Verwendet
__index__(), falls verfügbar.
-
double PyFloat_AS_DOUBLE(PyObject *pyfloat)¶
Gibt eine C double-Repräsentation des Inhalts von pyfloat zurück, aber ohne Fehlerprüfung.
-
PyObject *PyFloat_GetInfo(void)¶
- Rückgabewert: Neue Referenz. Teil der Stabilen ABI.
Gibt eine Structseq-Instanz zurück, die Informationen über die Genauigkeit, minimalen und maximalen Werte eines Floats enthält. Dies ist ein dünner Wrapper um die Header-Datei
float.h.
-
double PyFloat_GetMax()¶
- Teil der Stable ABI.
Gibt den maximal darstellbaren endlichen Float DBL_MAX als C double zurück.
-
double PyFloat_GetMin()¶
- Teil der Stable ABI.
Gibt den minimalen normalisierten positiven Float DBL_MIN als C double zurück.
Pack- und Entpackfunktionen¶
Die Pack- und Entpackfunktionen bieten eine effiziente plattformunabhängige Möglichkeit, Gleitkommawerte als Byte-Strings zu speichern. Die Pack-Routinen erzeugen einen Byte-String aus einem C double, und die Entpack-Routinen erzeugen einen C double aus einem solchen Byte-String. Die Endung (2, 4 oder 8) gibt die Anzahl der Bytes im Byte-String an.
Auf Plattformen, die IEEE 754-Formate zu verwenden scheinen, arbeiten diese Funktionen durch Kopieren von Bits. Auf anderen Plattformen ist das 2-Byte-Format identisch mit dem IEEE 754 binary16 Half-Precision-Format, das 4-Byte-Format (32-Bit) ist identisch mit dem IEEE 754 binary32 Single-Precision-Format und das 8-Byte-Format mit dem IEEE 754 binary64 Double-Precision-Format, obwohl die Packung von INFs und NaNs (falls solche auf der Plattform existieren) nicht korrekt behandelt wird und der Versuch, einen Byte-String mit einem IEEE INF oder NaN zu entpacken, eine Ausnahme auslöst.
Beachten Sie, dass der NaN-Typ auf IEEE-Plattformen möglicherweise nicht erhalten bleibt (stille NaNs werden zu leisen), z. B. auf x86-Systemen im 32-Bit-Modus.
Auf Nicht-IEEE-Plattformen mit mehr Genauigkeit oder größerem dynamischen Bereich als IEEE 754 unterstützt, können nicht alle Werte gepackt werden; auf Nicht-IEEE-Plattformen mit weniger Genauigkeit oder kleinerem dynamischen Bereich können nicht alle Werte entpackt werden. Was in solchen Fällen passiert, ist teilweise zufällig (leider).
Hinzugefügt in Version 3.11.
Pack-Funktionen¶
Die Pack-Routinen schreiben 2, 4 oder 8 Bytes ab p. le ist ein int-Argument, ungleich Null, wenn Sie den Byte-String im Little-Endian-Format wünschen (Exponent zuletzt, an p+1, p+3 oder p+6, p+7), Null, wenn Sie Big-Endian wünschen (Exponent zuerst, bei p). Die Konstante PY_BIG_ENDIAN kann verwendet werden, um die native Endianness zu verwenden: sie ist gleich 1 auf Big-Endian-Prozessoren oder 0 auf Little-Endian-Prozessoren.
Rückgabewert: 0, wenn alles in Ordnung ist, -1 im Fehlerfall (und eine Ausnahme gesetzt ist, höchstwahrscheinlich OverflowError).
Auf Nicht-IEEE-Plattformen gibt es zwei Probleme
Was dies tut, ist undefiniert, wenn x ein NaN oder eine Unendlichkeit ist.
-0.0und+0.0erzeugen den gleichen Byte-String.
-
int PyFloat_Pack2(double x, char *p, int le)¶
Packt ein C double im IEEE 754 binary16 Half-Precision-Format.
-
int PyFloat_Pack4(double x, char *p, int le)¶
Packt ein C double im IEEE 754 binary32 Single-Precision-Format.
-
int PyFloat_Pack8(double x, char *p, int le)¶
Packt ein C double im IEEE 754 binary64 Double-Precision-Format.
Entpackfunktionen¶
Die Entpack-Routinen lesen 2, 4 oder 8 Bytes ab p. le ist ein int-Argument, ungleich Null, wenn der Byte-String im Little-Endian-Format ist (Exponent zuletzt, an p+1, p+3 oder p+6 und p+7), Null, wenn Big-Endian (Exponent zuerst, bei p). Die Konstante PY_BIG_ENDIAN kann verwendet werden, um die native Endianness zu verwenden: sie ist gleich 1 auf Big-Endian-Prozessoren oder 0 auf Little-Endian-Prozessoren.
Rückgabewert: Der entpackte double. Im Fehlerfall ist dies -1.0 und PyErr_Occurred() ist wahr (und eine Ausnahme gesetzt, höchstwahrscheinlich OverflowError).
Beachten Sie, dass auf einer Nicht-IEEE-Plattform das Entpacken eines Byte-Strings, der eine NaN oder Unendlichkeit darstellt, verweigert wird.
-
double PyFloat_Unpack2(const char *p, int le)¶
Entpackt das IEEE 754 binary16 Half-Precision-Format als C double.
-
double PyFloat_Unpack4(const char *p, int le)¶
Entpackt das IEEE 754 binary32 Single-Precision-Format als C double.
-
double PyFloat_Unpack8(const char *p, int le)¶
Entpackt das IEEE 754 binary64 Double-Precision-Format als C double.