首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果两个条件都为真,如何反转数字的符号?

如果两个条件都为真,如何反转数字的符号?
EN

Stack Overflow用户
提问于 2020-04-16 23:27:55
回答 2查看 38关注 0票数 0

我正在寻找一个数学表达式来反转一个数字的符号,如果其他两个数字是正的。

对于单个条件x > 0,这很容易,在这种情况下,我将执行num *= sign(x)

但是如何在有两个条件x > 0y > 0的情况下做到这一点呢?这是不正确的:

代码语言:javascript
复制
num *= sign(-x) * sign(-y)

(如果同时使用x < 0y < 0,它也会翻转符号,这是我不想要的)。

我会想出

代码语言:javascript
复制
num *= sgn(-x) ** H(y)

代码语言:javascript
复制
num *= 1 - 2 * H(x) * H(y)

其中H是Heavyside阶跃函数,但虽然很简短,但它并不显式。

代码语言:javascript
复制
num *= (-1)^(H(x) * H(y))

是好一点,但我们能更好/更短/更明确吗?

这个问题并不特定于特定的编程语言--实际上,它根本不是关于编程的,所以使用if并不是我想要的。我正在寻找类似于数学家的内嵌if的东西,我想我会在程序员论坛上找到对这个问题有最好想法的人……请告诉我我是对的;)

EN

Stack Overflow用户

发布于 2020-04-16 23:35:31

编辑:正如@MarkDickinson指出的,你可以使用-sign(min(x, y))

代码语言:javascript
复制
num *= -1 * sign(min(x, y))

然后:

如果两个结果都为正,则结果为-1.

  • If,其中至少有一个为负,则结果为1.
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61254069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档