You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在取绝对值最小值的计算中保留原数字的符号

如何在取绝对值最小值的计算中保留原数字的符号

看起来你现在的问题是,取两个数绝对值的最小值后,没办法保留原数的符号对吧?我来帮你调整一下函数~

咱们先理清楚问题出在哪:你当前的代码里,min(abs(a), abs(b))只拿到了绝对值的最小数值,但完全丢掉了对应的原数符号。要得到带符号的结果,核心是找到绝对值更小的那个原数,而不是它的绝对值,再用这个带符号的数去加c就可以啦。

我给你两种实现方式,你可以按需选择:

方式一:清晰的条件判断写法

这种写法逻辑直白,容易理解,适合需要处理特殊情况(比如两数绝对值相等)的场景:

a = 140
b = -87
c = 29.8

def calc(a, b, c):
    # 找到绝对值更小的原数
    if abs(a) < abs(b):
        signed_min = a
    elif abs(b) < abs(a):
        signed_min = b
    else:
        # 当两个数绝对值相等时,这里可以根据需求选a或b,比如选a
        signed_min = a
    d = signed_min + c
    return d

print(calc(a, b, c))  # 输出 -116.8

方式二:简洁的三元表达式写法

如果不需要特别处理绝对值相等的情况,用三元表达式可以让代码更紧凑:

a = 140
b = -87
c = 29.8

def calc(a, b, c):
    # 直接判断并拿到带符号的最小绝对值原数
    signed_min = a if abs(a) <= abs(b) else b
    return signed_min + c

print(calc(a, b, c))  # 输出 -116.8

你可以测试一下,这两种写法在你的例子里都会返回-116.8,完全符合你的需求。如果后续遇到两数绝对值相等的情况,只需要调整条件判断里的逻辑就行~

备注:内容来源于stack exchange,提问作者Kevin

火山引擎 最新活动