给一个负数表示肯定

我有一个Java方法,我总结了一组数字。 不过,我希望任何负数都被视为正数。 所以(1)+(2)+(1)+( – 1)应该等于5。

我确信有这样做的很简单的方法 – 我只是不知道如何。

只要打电话Math.abs 。 例如:

int x = Math.abs(-5); 

其中将x设置为5

你所描述的概念被称为“绝对值”,Java有一个叫做Math.abs的函数来为你做。 或者你可以避免函数调用,自己动手:

 number = (number < 0 ? -number : number); 

要么

 if (number < 0) number = -number; 

你正在寻找绝对的价值,伙伴。 Math.abs(-5)返回5 …

使用absfunction:

 int sum=0; for(Integer i : container) sum+=Math.abs(i); 
 int x = -20 int y = x + (2*(-1*x)); // Therefore y = -20 + (40) = 20 

您想要将每个数字包装到Math.abs() 。 例如

 System.out.println(Math.abs(-1)); 

打印出“1”。

如果你想避免写Math. – 部分,你可以静态包含Math util。 写吧

 import static java.lang.Math.abs; 

以及你的import,你可以通过写作来引用abs()函数

 System.out.println(abs(-1)); 

没有lib的乐趣:

  value = (value*value)/value 

与lib乐趣:

  value=Math.abs(value); 

你在问绝对的价值吗?

Math.abs(…)是您可能需要的function。

最简单的方法是将每个数字包装在一个Math.abs()调用中,所以你可以添加:

 Math.abs(1) + Math.abs(2) + Math.abs(1) + Math.abs(-1) 

通过逻辑的改变来反映你的代码的结构。 也许是绝妙的,但它确实是你想要的。

当你需要expression一个没有损失或缺失的概念(负值)时,这就是所谓的“绝对值”。


获得绝对值的逻辑非常简单: "If it's positive, maintain it. If it's negative, negate it"


这意味着你的逻辑和代码应该像下面这样工作:

 //If value is negative... if ( value < 0 ) { //...negate it (make it a negative negative-value, thus a positive value). value = negate(value); } 

有两种方法可以否定一个值:

  1. 通过,否定它的价值: value = (-value);
  2. 通过乘以“100%负数”或“-1”: value = value * (-1);

两者实际上是同一枚硬币的两面。 这只是你通常不记得value = (-value); 其实value = 1 * (-value);


那么,至于如何在Java中实际执行它,则非常简单,因为Java已经为Math class提供了一个函数: value = Math.abs(value);

是的,在没有Math.abs()情况下这样做只是一行非常简单的math代码,但为什么让你的代码看起来很丑? 只需使用Java提供的Math.abs()函数! 他们提供这个理由!

如果你绝对需要跳过这个函数,你可以使用value = (value < 0) ? (-value) : value; value = (value < 0) ? (-value) : value; ,这只是我在逻辑(第三)部分提到的使用三元运算符( ? : :)的代码更紧凑的版本。


此外,可能会出现这样的情况:在可能同时接收正值和负值的函数内,您总是要表示丢失或缺失。

而不是做一些复杂的检查,你可以简单地得到绝对值,并取消它: negativeValue = (-Math.abs(value));


考虑到这一点,并考虑一个例如你的多个数字的情况下,实现一个函数将是一个不错的主意:

 int getSumOfAllAbsolutes(int[] values){ int total = 0; for(int i=0; i<values.lenght; i++){ total += Math.abs(values[i]); } return total; } 

根据您可能需要再次使用相关代码的可能性,将它们添加到您自己的“utils”库中,首先将这些函数分解为其核心组件,然后将最终function简单地保存为调用嵌套核心组件的现在分裂function:

 int[] makeAllAbsolute(int[] values){ //@TIP: You can also make a reference-based version of this function, so that allocating 'absolutes[]' is not needed, thus optimizing. int[] absolutes = values.clone(); for(int i=0; i<values.lenght; i++){ absolutes[i] = Math.abs(values[i]); } return absolutes; } int getSumOfAllValues(int[] values){ int total = 0; for(int i=0; i<values.lenght; i++){ total += values[i]; } return total; } int getSumOfAllAbsolutes(int[] values){ return getSumOfAllValues(makeAllAbsolute(values)); } 

你为什么不把multiply that number with -1

喜欢这个:

 //Given x as the number, if x is less than 0, return 0 - x, otherwise return x: return (x <= 0.0F) ? 0.0F - x : x; 

如果你对二进制补充的机制感兴趣的话,下面是绝对低效的,但是说明性的低级方式:

 private static int makeAbsolute(int number){ if(number >=0){ return number; } else{ return (~number)+1; } } 
 String s = "-1139627840"; BigInteger bg1 = new BigInteger(s); System.out.println(bg1.abs()); 

或者:

 int i = -123; System.out.println(Math.abs(i)); 

尝试这个:

 int answer = x * -1; 

有了这个,你可以把一个积极的消极和消极的积极。

希望能帮助到你! 祝你好运!

我需要一个很长的绝对值,深入研究Math.abs,发现如果我的参数小于LONG.MIN_VAL,即-9223372036854775808l,那么abs函数将不会返回绝对值,而只会返回最小值。 在这种情况下,如果你的代码进一步使用这个abs值,那么可能会有一个问题。

不要这样做

number =(number <0?-number:number);

要么

if(number <0)number = – number;

这将是一个错误,当你运行你的代码时发现错误,它会报告为RV_NEGATING_RESULT_OF