如何转换复数?

时间:2016-02-16 04:43:29

标签: python

我为生物方程式构建了一个计算器,我想我已经缩小了问题的来源,这是我自然的日志:

goldman = ((R * T) / F) * cmath.log(float(top_row) / float(bot_row))

print("Membrane potential: " + str(goldman) + "V"

我的问题是它只会以复杂的形式显示输出:

Membrane potential: (0.005100608207126714+0j)V

有没有办法让它作为浮动数字打印?我尝试过的任何事情都没有奏效。

3 个答案:

答案 0 :(得分:7)

复数有一个实部和虚部:

>>> c = complex(1, 0)
>>> c
(1+0j)
>>> c.real
1.0

看起来你只想要真实的部分......所以:

print("Membrane potential: " + str(goldman.real) + "V"

答案 1 :(得分:4)

使用math.log代替cmath.log

由于您不想要结果的虚部,最好使用math.log而不是cmath.log。这样,如果您的输入不在真实log的有效域中,您就会收到错误,这比默默地给您无意义的结果要好得多(例如,如果top_row是负)。此外,复杂的编号结果对于这个特定的等式没有任何意义。

即使用:

goldman = ((R * T) / F) * math.log(float(top_row) / float(bot_row))

答案 2 :(得分:0)

如果只想将其转换为浮点值,则可以执行以下操作:

def print_float(x1):
a=x1.real
b=x1.imag
val=a+b
print(val)

ec=complex(2,3)

通过这种方式,您实际上可以获得浮动值。