如何转换复数?

2024-04-30 00:33:00 发布

您现在位置: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

有没有办法把它打印成浮点数?我试过的都没用。


Tags: logtopbot记录生物float计算器cmath
3条回答

复数有实部和虚部:

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

看起来你只是想要真正的角色。。。所以:

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

使用math.log而不是cmath.log

因为您不需要结果的虚部,所以最好使用math.log,而不是cmath.log。这样,如果您的输入不在一个真正的log的有效域中,您将得到一个错误,这比无提示地给出无意义的结果要好得多(例如,如果top_row为负)。而且,复数结果对于这个特殊的方程来说毫无意义。

即,使用:

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

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

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

ec=complex(2,3)

这样你就可以得到浮动值。

相关问题 更多 >