Python计算-27的立方根输出复数,如何避免得到复数结果?
问题原因
Python 中直接对负数使用分数次幂**运算时,默认返回的是复数域的主根,因此你计算-27的立方根才会得到复数结果,而非实数范围内的正确解-3。
解决方案1:通用奇数次开根适配
如果需要适配任意奇数次开实数根的需求,可以先判断底数符号和根指数的奇偶性,满足负数开奇数次根的条件时,先计算绝对值的根再补回负号:
n1, n2 = -27, 3 if n1 < 0 and n2 % 2 == 1: root = -(abs(n1) ** (1/n2)) else: root = n1 ** (1/n2) print(root)
运行后输出结果为-3.0。
解决方案2:专用立方根方法
如果仅需要计算立方根,可以直接使用numpy库的cbrt()方法,该方法原生支持负数输入,直接返回实数立方根:
import numpy as np n1 = -27 root = np.cbrt(n1) print(root)
运行后输出结果为-3.0。
内容的提问来源于stack exchange,提问作者FishyBusinessYT
相关产品推荐
相关产品推荐

