Найти - Пользователи
Полная версия: Преобразование числа Эйлера в int
Начало » Python для новичков » Преобразование числа Эйлера в int
1
SergeyChmutov
У меня есть значение адреса сигнала, выраженное через основание натурального логарифма. Как преобразовать 2.83491541e-309 в фактический int?
DamMercul
 int(float(your_num))
Что-то я лишнее намудрил в оригинале
P.S. your_num - твое это число в строке
SergeyChmutov
В общем я разбирался в этом вопросе, оказалось совсем не так, как я описал. В базе хранится значение 2.83491541e-309, специфичным софтом для этой базы я могу выгрузить это поле либо в dec либо hex.
В dec формате значение 7039485333511, а в hex 000006670205D007. Судя по всему в БД происходит запись побитового представления числа hex. Иначе число 2.83491541e-309 фактически 0.
Как можно реализовать на питоне представление этого float в dec или hex.
doza_and
SergeyChmutov
Судя по всему в БД происходит запись побитового представления числа hex
 import ctypes as ct
class UU(ct.Union):
    _fields_ = [("i", ct.c_uint64),
                ("f", ct.c_double)]
a=UU()
>>> a.i=7039485333511
>>> a.f
3.477967867691e-311

Как оно связано с вашим числом 2.83491541e-309 неизвестно. Если вы приведете несколько тысяч примеров, то, возможно, это можно будет понять.
SergeyChmutov
doza_and
Как оно связано с вашим числом 2.83491541e-309 неизвестно. Если вы приведете несколько тысяч примеров, то, возможно, это можно будет понять.
Да, вероятно этим я ввел кого-то в заблуждение. Я точно не помнил, значение какого поля указал в посте, и импортировал не его. Поэтому и вышла разница в значениях.

doza_and, спасибо за подсказку
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB