我为生物方程式构建了一个计算器,我想我已经缩小了问题的来源,这是我自然的日志:
goldman = ((R * T) / F) * cmath.log(float(top_row) / float(bot_row))
print("Membrane potential: " + str(goldman) + "V"
我的问题是它只会以复杂的形式显示输出:
Membrane potential: (0.005100608207126714+0j)V
有没有办法让它作为浮动数字打印?我尝试过的任何事情都没有奏效。
答案 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)
通过这种方式,您实际上可以获得浮动值。