浮動小数点オブジェクト¶
-
PyTypeObject PyFloat_Type¶
- 次に属します: Stable ABI.
この
PyTypeObjectのインスタンスは Python の浮動小数点型を表します。 Python レベルのfloatと同じオブジェクトです。
-
int PyFloat_Check(PyObject *p)¶
引数が
PyFloatObjectかPyFloatObjectのサブタイプであるときに真を返します。この関数は常に成功します。
-
int PyFloat_CheckExact(PyObject *p)¶
引数が
PyFloatObjectであるがPyFloatObjectのサブタイプでないときに真を返します。この関数は常に成功します。
-
PyObject *PyFloat_FromString(PyObject *str)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
str の文字列値をもとに
PyFloatObjectオブジェクトを生成します。失敗するとNULLを返します。
-
PyObject *PyFloat_FromDouble(double v)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
v から
PyFloatObjectオブジェクトを生成して返します。 失敗するとNULLを返します。
-
double PyFloat_AsDouble(PyObject *pyfloat)¶
- 次に属します: Stable ABI.
pyfloatの値を C の double で返します。pyfloatが Python の浮動小数点オブジェクトでなく、__float__()メソッドを持つ場合は、まずそのメソッドを呼び出してpyfloatを float に変換します。__float__()が定義されていなければ__index__()を使います。 失敗した場合は-1.0を返すので、PyErr_Occurred()を呼び出してエラーの有無を確認する必要があります。バージョン 3.8 で変更: 可能であれば
__index__()を使うようになりました。
-
PyObject *PyFloat_GetInfo(void)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
float の精度、最小値、最大値に関する情報を含む structseq インスタンスを返します。これは、
float.hファイルの薄いラッパーです。
-
double PyFloat_GetMax()¶
- 次に属します: Stable ABI.
表現できる最大の有限の浮動小数点数 DBL_MAX を C の double として返します。
-
double PyFloat_GetMin()¶
- 次に属します: Stable ABI.
float の正規化された最小の正の値 DBL_MIN を C の double 型で返します。
-
Py_INFINITY¶
正の無限大を表す double 型の定数式に展開されるマクロです。
C11 標準の
<math.h>ヘッダのINFINITYマクロと同等です。バージョン 3.15 で ソフト非推奨 <Soft deprecated>.
-
Py_NAN¶
静かな非数 (qNaN) を表す double 型の定数式に展開されるマクロです。
ほとんどのプラットフォームでは、C11 標準の
<math.h>ヘッダのNANマクロと同等です。
-
Py_HUGE_VAL¶
INFINITYと同等です。バージョン 3.14 で ソフト非推奨 <Soft deprecated>.
-
Py_RETURN_INF(sign)¶
signの符号に応じて、関数からmath.infまたは-math.infを返します。ほとんどのプラットフォームでは、次と同等です。
return PyFloat_FromDouble(copysign(INFINITY, sign));
-
Py_IS_FINITE(X)¶
指定された浮動小数点数
Xが有限、つまり正規化数、非正規化数、ゼロのいずれかであり、無限大や NaN でなければ1を返します。 それ以外の場合は0を返します。バージョン 3.14 で ソフト非推奨 <Soft deprecated>: 代わりに
isfiniteを使ってください。
-
Py_IS_INFINITY(X)¶
指定された浮動小数点数
Xが正または負の無限大の場合に1を返します。 それ以外の場合は0を返します。バージョン 3.14 で ソフト非推奨 <Soft deprecated>: 代わりに
isinfを使ってください。
-
Py_IS_NAN(X)¶
指定された浮動小数点数
Xが非数 (NaN) の場合に1を返します。 それ以外の場合は0を返します。バージョン 3.14 で ソフト非推奨 <Soft deprecated>: 代わりに
isnanを使ってください。
パック関数とアンパック関数¶
パック関数とアンパック関数は、浮動小数点数をバイト列として格納するための、効率的でプラットフォームに依存しない方法を提供します。 パック関数は C の double からバイト列を作成し、アンパック関数はそのバイト列から C の double を作成します。 接尾辞 (2、4、8) はバイト列のバイト数を表します。
2 バイト形式は IEEE 754 binary16 半精度形式です。
4 バイト形式は IEEE 754 binary32 単精度形式です。
8 バイト形式は IEEE 754 binary64 倍精度形式です。
32 ビットモードの x86 システムなど、一部のプラットフォームでは、アンパック時に NaN の種類が保持されないことがあります (シグナリング NaN が静かな NaN になります)。
double 型は IEEE 754 binary64 倍精度形式であると仮定しています。 そうでない場合の動作は、残念ながら一部が偶然に左右されます。 IEEE 形式でなく、IEEE 754 よりも精度やダイナミックレンジが大きいプラットフォームでは、パックできない値があります。 逆に精度やダイナミックレンジが小さいプラットフォームでは、アンパックできない値があります。 INF や NaN のような特殊な数値 (そのプラットフォームに存在する場合) のパックは、正しく処理されないことがあります。 また、IEEE の INF や NaN を含むバイト列をアンパックしようとすると例外が発生することがあります。
Added in version 3.11.
パック関数¶
パック関数は p を先頭として 2、4、8 バイトを書き込みます。
le は int 型の引数で、リトルエンディアン形式 (指数部が末尾の p+1、p+3、または p+6 と p+7 にある形式) にする場合は非ゼロ、ビッグエンディアン形式 (指数部が先頭の p にある形式) にする場合はゼロを指定します。
ネイティブのエンディアンを選ぶには PY_LITTLE_ENDIAN 定数を使ってください。
この定数は、ビッグエンディアンのプロセッサでは 0、リトルエンディアンのプロセッサでは 1 です。
戻り値は、成功した場合は 0、エラーの場合は -1 です (例外も設定され、通常は OverflowError です)。
-
int PyFloat_Pack2(double x, char *p, int le)¶
C の double を IEEE 754 binary16 半精度形式にパックします。
-
int PyFloat_Pack4(double x, char *p, int le)¶
C の double を IEEE 754 binary32 単精度形式にパックします。
-
int PyFloat_Pack8(double x, char *p, int le)¶
C の double を IEEE 754 binary64 倍精度形式にパックします。
アンパック関数¶
アンパック関数は p を先頭として 2、4、8 バイトを読み取ります。
le は int 型の引数で、バイト列がリトルエンディアン形式 (指数部が末尾の p+1、p+3、または p+6 と p+7 にある形式) なら非ゼロ、ビッグエンディアン形式 (指数部が先頭の p にある形式) ならゼロを指定します。
ネイティブのエンディアンを選ぶには PY_LITTLE_ENDIAN 定数を使ってください。
この定数は、ビッグエンディアンのプロセッサでは 0、リトルエンディアンのプロセッサでは 1 です。
戻り値は、アンパックした double です。
エラーの場合は -1.0 を返し、PyErr_Occurred() が真になります (例外も設定され、通常は OverflowError です)。
-
double PyFloat_Unpack2(const char *p, int le)¶
IEEE 754 binary16 半精度形式を C の double にアンパックします。
-
double PyFloat_Unpack4(const char *p, int le)¶
IEEE 754 binary32 単精度形式を C の double にアンパックします。
-
double PyFloat_Unpack8(const char *p, int le)¶
IEEE 754 binary64 倍精度形式を C の double にアンパックします。