【问题标题】:Positive and negative number values [duplicate]正负数值[重复]
【发布时间】:2018-07-23 16:01:24
【问题描述】:

在语句中在正值和负值之间切换的最佳方法是什么(以布尔值为例):

myBoo = !myBoo

要对 int 做同样的事情,我需要检查 if 语句:

if (val >= 0)
{
     val = val*-1
}
else
{
    val = Math.abs(val);
}

有没有更直接的方法来做到这一点?

提前致谢

【问题讨论】:

  • 不要标记多种语言
  • 乘以-1!
  • 乘以-1。
  • 如果我理解正确,您希望负数为正数,正数为负数...只需将两者乘以 -1

标签: java c#


【解决方案1】:
int myBoo = 7;

myBoo = -myBoo;

【讨论】:

  • 比乘法更有效,所以 +1。
  • @PerryMonschau 我认为在实践中这不会更有效,至少可以衡量,但这是一个值得尝试的有趣基准。
  • @DavidG 我认为这种基准测试将归结为使用的编译器。如果我没记错的话,可能大多数人都足够聪明,可以将两者编译到同一个操作中。
  • @PerryMonschau 好吧,我怀疑他们会编译成相同的操作,至少在 C# 中不会。我只是认为差异不会太大,如果有的话。
  • @PerryMonschau 好吧,我尝试了 1 亿次迭代,结果总共有 0.1 秒的差异,第二次运行则相反。所以对于大多数凡人来说还不够担心:)
【解决方案2】:

一种方法是在值前添加一个负号:

int myInt = -myInt; 

在语句中切换正数或负数的另一种方法是将其乘以 -1。

myInt = myInt * -1;

【讨论】:

    【解决方案3】:

    【讨论】:

      【解决方案4】:

      您可以使用Math.signum(),如果数字为负数,则返回-1.0,如果为正数,则返回1.0,如果为零,则返回0

      【讨论】:

      • 提问的人想否定这个数字。所以例如给定1234,它会给你-1234。这根本没有回答问题。
      猜你喜欢
      • 2012-07-03
      • 1970-01-01
      • 2021-07-26
      • 2012-10-21
      • 2018-06-11
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多