Как проверить размер float в python?

Я хочу проверить, действительно ли поплавок - 32 или 64 бита (и количество бит массива float numpy). Там должен быть встроенный, но просто не узнал...

Ответ 1

Размер Python float можно запросить через sys.float_info. Однако я никогда не встречал ничего, кроме 64 бит, на разных архитектурах.

Элементы массива NumPy могут иметь разный размер, но вы можете проверить их размер в байтах на a.itemsize, где a - массив NumPy.

Ответ 2

numpy.finfo перечисляет размеры и другие атрибуты float32..., включая nexp: количество бит в экспоненте, включая знак и смещение.
nmant: количество бит в мантиссе.
На машине с IEEE-754 стандартная плавающая точка,

import numpy as np
for f in (np.float32, np.float64, float):
    finfo = np.finfo(f)
    print finfo.dtype, finfo.nexp, finfo.nmant

будет напечатан, например,

float32 8 23
float64 11 52
float64 11 52

(Попробуйте float16 и float128 тоже.)

Ответ 3

Диапазон значений с плавающей запятой доступен в объекте sys.float_info.

Как говорит Свен, для CPython float всегда 64-бит. Но ссылка на язык Python говорит

Вы пользуетесь базовой машинной архитектурой (и реализацией C или Java) для принятого диапазона... ".

Так что это не обязательно для других реализаций Python.

Ответ 4

print numpy.finfo(numpy.float)
Machine parameters for float64
---------------------------------------------------------------------
precision= 15   resolution= 1.0000000000000001e-15
machep=   -52   eps=        2.2204460492503131e-16
negep =   -53   epsneg=     1.1102230246251565e-16   
minexp= -1022   tiny=       2.2250738585072014e-308
maxexp=  1024   max=        1.7976931348623157e+308
nexp  =    11   min=        -max
---------------------------------------------------------------------