Eu tenho um método Java no qual estou somando um conjunto de números. No entanto, quero que quaisquer números negativos sejam tratados como positivos. Então (1) + (2) + (1) + (- 1) deve ser igual a 5.
Tenho certeza de que há uma maneira muito fácil de fazer isso - simplesmente não sei como.
java
negative-number
Bandeja
fonte
fonte
Respostas:
Basta ligar para Math.abs . Por exemplo:
Qual será definido
x
como5
.fonte
O conceito que você está descrevendo é chamado de "valor absoluto" e o Java tem uma função chamada Math.abs para fazer isso por você. Ou você pode evitar a chamada de função e fazer você mesmo:
ou
fonte
Você está procurando por valor absoluto, companheiro.
Math.abs(-5)
retorna 5 ...fonte
Use a
abs
função:fonte
fonte
Tente isso (o negativo na frente do x é válido, pois é um operador unário, encontre mais aqui ):
Com isso, você pode transformar um positivo em negativo e um negativo em positivo.
No entanto , se você deseja apenas tornar positivo um número negativo, tente o seguinte:
OU , se você preferir não usar o método abs () por algum motivo, tente o seguinte:
Espero que ajude! Boa sorte!
fonte
Você está perguntando sobre valores absolutos?
Math.abs (...) é a função que você provavelmente deseja.
fonte
Você deseja agrupar cada número
Math.abs()
. por exemploimprime "1".
Se você deseja evitar escrever a
Math.
parte, pode incluir estaticamente o utilitário Math. Apenas escrevajunto com suas importações, e você pode consultar a
abs()
função apenas escrevendofonte
A maneira mais fácil, se detalhada, de fazer isso é agrupar cada número em uma chamada Math.abs (); portanto, você deve adicionar:
com alterações lógicas para refletir como seu código está estruturado. Detalhado, talvez, mas faz o que você deseja.
fonte
-
sinais? Ou, caso contrário, inclusive se ele não tiver controle, não seria melhor usar uma função como, emabsoluteSum( int[] values ){ /*loop with Math.abs()*/ }
vez de agrupar manualmente Math.abs () em cada valor? [-1]Quando você precisa representar um valor sem o conceito de perda ou ausência (valor negativo), isso é chamado de "valor absoluto".
A lógica para obter o valor absoluto é muito simples:
"If it's positive, maintain it. If it's negative, negate it"
.O que isso significa é que sua lógica e código devem funcionar da seguinte maneira:
Existem duas maneiras de negar um valor:
value = (-value);
value = value * (-1);
Ambos são na verdade dois lados da mesma moeda. É que você geralmente não se lembra que
value = (-value);
é realmentevalue = 1 * (-value);
.Bem, sobre como você realmente faz isso em Java, é muito simples, porque Java já fornece uma função para isso, no
Math class
:value = Math.abs(value);
Sim, fazê-lo sem
Math.abs()
é apenas uma linha de código com uma matemática muito simples, mas por que tornar seu código feio? Basta usar aMath.abs()
função fornecida pelo Java ! Eles fornecem isso por uma razão!Se você absolutamente precisar pular a função, poderá usar
value = (value < 0) ? (-value) : value;
, que é simplesmente uma versão mais compacta do código que mencionei na seção lógica (3), usando o operador Ternary (? :
) .Além disso, pode haver situações em que você sempre queira representar perda ou ausência em uma função que possa receber valores positivos e negativos.
Em vez de fazer uma verificação complicada, você pode simplesmente obter o valor absoluto e negá-lo:
negativeValue = (-Math.abs(value));
Com isso em mente, e considerando um caso com uma soma de vários números como o seu, seria uma boa idéia implementar uma função:
Dependendo da probabilidade de você precisar do código relacionado novamente, também pode ser uma boa ideia adicioná-los à sua própria biblioteca "utils", dividindo essas funções em seus componentes principais primeiro e mantendo a função final simplesmente como um ninho de chamadas para as funções agora divididas dos componentes principais:
fonte
Por que não você
multiply that number with -1
?Como isso:
fonte
Se você está interessado na mecânica do complemento de dois, aqui está a maneira absolutamente ineficiente, mas ilustrativa, de baixo nível:
fonte
Eu recomendaria as seguintes soluções:
sem diversão divertida:
(Na verdade, o acima não funciona.)
com lib diversão:
fonte
Alternativamente:
fonte
A função de biblioteca
Math.abs()
pode ser usada.Math.abs()
retorna o valor absoluto do argumentopor exemplo:
int x=-5;
System.out.println(Math.abs(x));
Saída: 5
int y=6;
System.out.println(Math.abs(y));
Saída: 6
fonte
Para converter número negativo em número positivo (isso é chamado de valor absoluto), usa Math.abs (). Esse método Math.abs () funciona assim
“number = (number < 0 ? -number : number);".
No exemplo abaixo,
Math.abs(-1)
irá converter o número negativo 1 em positivo 1.public static void main (String [] args) {
fonte
Eu precisava do valor absoluto de um longo e analisei profundamente o Math.abs e descobri que, se meu argumento for menor que LONG.MIN_VAL que é -9223372036854775808l, a função abs não retornará um valor absoluto, mas apenas o valor mínimo. Nesse caso, se o seu código estiver usando esse valor abs ainda mais, pode haver um problema.
fonte
Você pode tentar este?
fonte
No kotlin você pode usar o unaryPlus
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/unary-plus.html
fonte
não faça isso
número = (número <0? -número: número);
ou
if (número <0) número = -número;
isso será um erro quando você executar o comando find bug no seu código, ele será reportado como RV_NEGATING_RESULT_OF
fonte