Python 浮点运算给出复数结果

Python float operations give complex result

eq = (((1 - (2 * normal_rpm - s8) ** s1) * s2 * math.sin(normal_rpm ** s3 / s4) * (1 - math.sin((normal_rpm + s5) ** (2) + 5) + s6) / (s7))) + 0.67

是我对这个变量的公式,其中S变量是浮点数。有时 returns 这样的结果

(0.6806708980989302+0.008606807113252896j)

我不能在进一步的数学运算中使用这个结果,我需要一个浮点数,即使我必须稍微舍入答案。

这不是四舍五入问题,但您将负数计算为小数指数(例如,您正在计算 -5 的平方根)。

例如:

 In [2]: (-5)**0.5                                                                     
 Out[2]: (1.3691967456605067e-16+2.23606797749979j)

如果您不能接受复数作为结果,那么唯一其他合乎逻辑的出路是在发生这种情况时引发错误(没有实数乘以自身得出或接近 -5)。

如果这不是预期的,您应该仔细检查它前面的一个或多个公式,因为可能有错字,或者在应用此公式之前您需要检查一些先决条件。