Tengo un método Java en el que estoy sumando un conjunto de números. Sin embargo, quiero que los números negativos se traten como positivos. Entonces (1) + (2) + (1) + (- 1) debería ser igual a 5.
Estoy seguro de que hay una manera muy fácil de hacer esto, simplemente no sé cómo.
java
negative-number
Bandeja
fuente
fuente
Respuestas:
Simplemente llame a Math.abs . Por ejemplo:
Que se establecerá
x
en5
.fuente
El concepto que está describiendo se llama "valor absoluto", y Java tiene una función llamada Math.abs para hacerlo por usted. O puede evitar la llamada a la función y hacerlo usted mismo:
o
fuente
Estás buscando un valor absoluto, amigo.
Math.abs(-5)
devuelve 5 ...fuente
Usa la
abs
función:fuente
fuente
Pruebe esto (lo negativo delante de la x es válido ya que es un operador unario, encuentre más aquí ):
Con esto, puede convertir lo positivo en negativo y lo negativo en positivo.
Sin embargo , si solo desea que un número negativo sea positivo, intente esto:
O , si prefiere no usar el método abs () por alguna razón, intente esto:
¡Espero eso ayude! ¡Buena suerte!
fuente
¿Estás preguntando sobre valores absolutos?
Math.abs (...) es la función que probablemente desee.
fuente
Desea envolver cada número en
Math.abs()
. p.ejimprime "1".
Si desea evitar escribir la parte
Math.
, puede incluir la utilidad matemática estáticamente. Solo escribejunto con sus importaciones, y puede consultar la
abs()
función simplemente escribiendofuente
La manera más fácil, si es una forma detallada de hacer esto, es envolver cada número en una llamada Math.abs (), por lo que agregaría:
con cambios lógicos para reflejar cómo está estructurado su código. Detallado, tal vez, pero hace lo que quieres.
fuente
-
signos? O de lo contrario, incluso si no tiene control, ¿no sería mejor usar una función como enabsoluteSum( int[] values ){ /*loop with Math.abs()*/ }
lugar de envolver manualmente Math.abs () en cada valor? [-1]Cuando necesita representar un valor sin el concepto de pérdida o ausencia (valor negativo), eso se denomina "valor absoluto".
La lógica para obtener el valor absoluto es muy simple:
"If it's positive, maintain it. If it's negative, negate it"
.Lo que esto significa es que su lógica y código deberían funcionar de la siguiente manera:
Hay 2 formas de negar un valor:
value = (-value);
value = value * (-1);
Ambas son en realidad dos caras de la misma moneda. Es solo que generalmente no recuerdas que
value = (-value);
es realmentevalue = 1 * (-value);
.Bueno, en cuanto a cómo lo haces realmente en Java, es muy simple, porque Java ya proporciona una función para eso, en
Math class
:value = Math.abs(value);
Sí, hacerlo sin él
Math.abs()
es solo una línea de código con matemática muy simple, pero ¿por qué hacer que su código se vea feo? ¡Solo use laMath.abs()
función proporcionada por Java ! Lo proporcionan por una razón!Si realmente necesita omitir la función, puede usar
value = (value < 0) ? (-value) : value;
, que es simplemente una versión más compacta del código que mencioné en la sección lógica (3ra), usando el operador Ternary (? :
) .Además, puede haber situaciones en las que desee representar siempre la pérdida o ausencia dentro de una función que pueda recibir valores positivos y negativos.
En lugar de hacer una comprobación complicada, simplemente puede obtener el valor absoluto y negarlo:
negativeValue = (-Math.abs(value));
Con eso en mente, y considerando un caso con una suma de múltiples números como el tuyo, sería una buena idea implementar una función:
Dependiendo de la probabilidad de que pueda necesitar código relacionado nuevamente, también podría ser una buena idea agregarlos a su propia biblioteca "utils", dividiendo dichas funciones en sus componentes principales primero y manteniendo la función final simplemente como un nido de llamadas a las funciones ahora divididas de los componentes principales:
fuente
Porque no
multiply that number with -1
?Me gusta esto:
fuente
Si está interesado en la mecánica del complemento de dos, esta es la forma absolutamente ineficiente, pero ilustrativa de bajo nivel que se hace:
fuente
Yo recomendaría las siguientes soluciones:
sin diversión lib:
(Lo anterior en realidad no funciona).
con diversión lib:
fuente
Alternativamente:
fuente
Math.abs()
Se puede usar la función de biblioteca .Math.abs()
devuelve el valor absoluto del argumentop.ej:
int x=-5;
System.out.println(Math.abs(x));
Salida: 5
int y=6;
System.out.println(Math.abs(y));
Salida: 6
fuente
Para convertir un número negativo en un número positivo (esto se llama valor absoluto), usa Math.abs (). Este método Math.abs () funciona así
“number = (number < 0 ? -number : number);".
En el siguiente ejemplo,
Math.abs(-1)
convertirá el número negativo 1 en positivo 1.public static void main (String [] args) {
fuente
Necesitaba el valor absoluto de un largo, y busqué profundamente en Math.abs y descubrí que si mi argumento es menor que LONG.MIN_VAL, que es -9223372036854775808l, entonces la función abs no devolvería un valor absoluto sino solo el valor mínimo. En este caso, si su código está usando este valor de abs más, entonces podría haber un problema.
fuente
¿Puedes probar este?
fuente
En kotlin puedes usar unaryPlus
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/unary-plus.html
fuente
no hagas esto
número = (número <0? -número: número);
o
if (número <0) número = -número;
esto será un error cuando ejecute find bug en su código, lo informará como RV_NEGATING_RESULT_OF
fuente