有没有办法将复数转换为正数?

时间:2019-01-08 06:22:45

标签: python integer

所以我有这么长的数字(即1081546747036327937),当我在pandas数据帧中清理数据时,我没有意识到Python将其转换为复数(即1.081546747036328e + 18)。

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

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

2 个答案:

答案 0 :(得分:2)

正如您在评论中所说,这不是复数,而是浮点数。您当然可以将其转换为(长)整数,但是您不能确定是否会获取初始数字。

在您的示例中:

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

将显示:

1081546747036327937 1.081546747036328e+18 1081546747036327936 -1

这是因为浮点数的精度有限,并且当二进制表示形式需要超过53位时,使用大整数会产生舍入误差。

答案 1 :(得分:1)

here可以理解,复数是实部和虚部的总和。

  

3 + 1j是一个实数为3且复数为1的复数

您有一个scientific notation(类型为float),它只是一个普通浮点数乘以指定的10的幂。

  

1e10等于十乘以十的1乘以

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