Есть ли способ конвертировать комплексное число в просто число? - PullRequest
0 голосов
/ 08 января 2019

Итак, у меня есть это длинное число (т. Е. 1081546747036327937), и когда я очистил свои данные в фрейме данных pandas, я не понял, что Python преобразовал их в комплексное число (т. Е. 1.081546747036328e + 18).

Я сохранил это как CSV. Проблема в том, что я случайно удалил исходный файл, попытался восстановить его, но безуспешно, так что ... Есть ли способ преобразовать это комплексное число обратно в исходное число?

Я попытался преобразовать его в str, используя str (data), но он остался прежним (т. Е. 1.081546747036328e + 18).

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Как вы сказали в комментарии, это не комплексное число, а число с плавающей запятой. Вы, конечно, можете преобразовать его в (длинное) целое число, но вы не можете быть уверены, что вернете исходное число.

В вашем примере:

i = 1081546747036327937
f = float(i)
j = int(f)
print(i, f, j, j-i)

отобразит:

1081546747036327937 1.081546747036328e+18 1081546747036327936 -1

Это связано с тем, что с плавающей запятой точность ограничена, а ошибки округления следует ожидать с большими целыми числами, когда двоичное представление требует более 53 бит.

0 голосов
/ 08 января 2019

Как можно прочитать здесь , комплексные числа представляют собой сумму действительной части и мнимой части.

3 + 1j - комплексное число с действительным значением 3 и комплексным значением 1

У вас есть научная нотация (тип float ), представляющая собой просто обычное число с плавающей точкой, умноженное на указанную степень 10.

1e10 равняется 1, умноженному на десять, степени десяти

Чтобы преобразовать это в int, вы можете просто преобразовать с помощью int (number) . Для получения дополнительной информации о типах данных Python вы можете посмотреть здесь

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