Python 有没有办法把复数转换成正数?

Python 有没有办法把复数转换成正数?,python,integer,Python,Integer,所以我有一个很长的数字(即:1081546747036327937),当我清理pandas dataframe中的数据时,我没有意识到Python将其转换为复数(即:1.081546747036328e+18) 我把这个保存为csv。问题是,我不小心删除了原始文件,试图恢复它,但到目前为止没有成功,所以。。。 有没有办法把这个复数转换回原来的数字 我试图使用str(数据)将其转换为str,但它保持不变(即:1.081546747036328e+18)。可以看出,复数是实部和虚部的总和 3+1j是

所以我有一个很长的数字(即:1081546747036327937),当我清理pandas dataframe中的数据时,我没有意识到Python将其转换为复数(即:1.081546747036328e+18)

我把这个保存为csv。问题是,我不小心删除了原始文件,试图恢复它,但到目前为止没有成功,所以。。。 有没有办法把这个复数转换回原来的数字

我试图使用str(数据)将其转换为str,但它保持不变(即:1.081546747036328e+18)。

可以看出,复数是实部和虚部的总和

3+1j是实数为3,复数为1的复数

您有一个(type is),它只是一个普通浮点乘以指定的10次方

1e10等于10的幂的1乘以10


要将其转换为int,只需使用int(number)进行转换即可。有关python数据类型的更多信息,请查看

,正如您在评论中所说的,这不是一个复数,而是一个浮点数。您当然可以将其转换为(长)整数,但不能确保返回初始数字

在您的示例中:

i = 1081546747036327937
f = float(i)
j = int(f)
print(i, f, j, j-i)
将显示:

1081546747036327937 1.081546747036328e+18 1081546747036327936 -1

这是因为浮点的精度有限,当二进制表示需要超过53位时,大整数可能会出现舍入误差。

这不是一个复数。这是一个浮点数,用科学符号表示。如果你想把它转换成一个整数,可以使用
int(n)
“anynumber”e+18表示“anynumber”乘以10 X 18,这是写大数字的简写,就像一个符咒。非常感谢@Yugandhar Chaudhari这是10乘以18的幂,不是10乘以18,只是为了让op更清楚:)@Jens是的,我会纠正自己10**18请注意