Как проверить размер поплавка в python? - PullRequest
21 голосов
/ 21 ноября 2011

Я хочу проверить, является ли число с плавающей точкой на самом деле 32 или 64 бита (и количество бит в массиве с плавающей точкой) Должна быть встроенная, но просто не узнала ...

Ответы [ 4 ]

19 голосов
/ 21 ноября 2011

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

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

8 голосов
/ 21 ноября 2011

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 тоже.)

6 голосов
/ 15 мая 2013
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
---------------------------------------------------------------------
5 голосов
/ 21 ноября 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...