Форум сайта python.su
Андрей Светлов
В numpy нет float128 потому что он собран без поддержки этого типа.
MSVC, которым на Windows по умолчанию собирается Питон (и третьесторонние расширения) поддержки float128 не имеет — соответственно и numpy тоже оказывается обделенным.
Отсутствие поддержки проявляется именно как отсутствие атрибута `float128` модуля `numpy`.
dir(numpy)
Офлайн
У меня в 64битнной Убунте 12.04 float128
есть по умолчанию. К чему бы это?
Офлайн
Андрей, вот это хорошо.)
Я себе убунту поставил 32бит, там точно нет. Попробуем Ubuntu 64 bit, спасибо.
по умолчанию используется float64, как сделать так, чтобы во всем файле переменные были другого типа (float32 или float128, например)?
Отредактировано eiyawii (Май 19, 2012 09:56:54)
Офлайн
Вероятно, вы несколько запутались. Желаете использовать float128 — пишите это явно. По умолчанию всё равно останется float64.
Офлайн
Андрей Светлов
Вероятно, вы несколько запутались. Желаете использовать float128 — пишите это явно. По умолчанию всё равно останется float64.
>>> float128(0.123456789012345678901234567890)
0.12345678901234567737
Офлайн
Потому что вы создаете numpy.float128
из стандартного float
, который 64-битный.
Офлайн
Андрей Светловкак мне создать полноценный float128 в котором 34 десятичных разряда после запятой?
Потому что вы создаете numpy.float128 из стандартного float, который 64-битный.
>>> from numpy import float128 as f128
>>> f128(1/3.)
0.33333333333333331483
>>> f128(1/f128(3))
0.33333333333333333334
Отредактировано eiyawii (Май 19, 2012 14:55:45)
Офлайн
Сами видите: задать нельзя, вычислить — можно.
Офлайн
Андрей Светловне вижу, почему 20 десятичных знаков, а не 34 обещанных?
Сами видите: задать нельзя, вычислить — можно.
Отредактировано eiyawii (Май 19, 2012 15:58:22)
Офлайн
Есть там ваши биты, не переживайте. В вычислениях присутствуют.
In [31]: bytearray(numpy.float64(1))
Out[31]: bytearray(b'\x00\x00\x00\x00\x00\x00\xf0?')
In [32]: bytearray(numpy.float128(1))
Out[32]: bytearray(b'\x00\x00\x00\x00\x00\x00\x00\x80\xff?\x00\x00\x00\x00\x00\x00')
Офлайн