给一个负数表示肯定
我有一个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 …
使用abs
function:
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); }
有两种方法可以否定一个值:
- 通过,否定它的价值:
value = (-value);
- 通过乘以“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