if else语句与0判断问题:求正负平方根仅得负数结果求助
解决负数平方根只得到负结果的问题
问题出在你的逻辑只生成了单个符号的根:对负数取绝对值开平方后加负号,正数直接取正根,自然只能得到单一符号的结果(负数对应负根,正数对应正根),没法同时拿到正负两个根。
正确的处理逻辑是:先计算原数绝对值的平方根(记为
sqrt_val),然后同时输出sqrt_val和-sqrt_val两个结果:- 原数为正数时,两个结果都是实数根;
- 原数为负数时,两个结果是复数根(需要用虚数单位
i表示)。
拿Python举个实际代码例子:
import math def get_both_square_roots(num): abs_num = abs(num) sqrt_val = math.sqrt(abs_num) if num >= 0: return (sqrt_val, -sqrt_val) else: return (complex(0, sqrt_val), complex(0, -sqrt_val)) # 测试用例 print(get_both_square_roots(9)) # 输出 (3.0, -3.0) print(get_both_square_roots(-9)) # 输出 (3j, -3j)额外说明:如果只考虑实数范围,负数没有平方根,只有正数才有两个互为相反数的实根。如果你的场景需要复数根,上面的代码就能满足需求,同时得到正负两种结果。
内容的提问来源于stack exchange,提问作者Ruiyu Lin
相关产品推荐
相关产品推荐

