162 votes

Rendre positif un nombre négatif

J'ai une méthode Java dans laquelle j'additionne un ensemble de nombres. Cependant, je veux que tous les nombres négatifs soient traités comme des positifs. Ainsi, (1)+(2)+(1)+(-1) devrait être égal à 5.

Je suis sûr qu'il existe un moyen très simple de le faire, mais je ne sais pas comment.

0 votes

Mathématiques simples stackoverflow.com/a/5220597/185022 :)

7 votes

Cela m'étonne que des questions aussi basiques obtiennent autant de votes positifs...

1 votes

Mes questions sont plus raisonnables que celle-ci mais elle a pourtant plus de votes négatifs.

404voto

Jon Skeet Points 692016

Appelez simplement Math.abs . Par exemple :

int x = Math.abs(-5);

Ce qui mettra x à 5 .

Notez que si vous passez Integer.MIN_VALUE la même valeur (toujours négative) sera renvoyée, car la plage de valeurs de int ne permet pas de représenter l'équivalent positif.

44 votes

Notez les cas limites, par exemple Math.abs(Integer.MIN_VALUE) = Integer.MIN_VALUE.

0 votes

((a <= 0.0D) ? 0.0D - a : a)

0 votes

Cela ne couvre pas la condition de bord pour Integer.MIN_VALUE . Référez-vous à ce youtu.be/IWrpDP-ad7g

107voto

Paul Tomblin Points 83687

Le concept que vous décrivez est appelé "valeur absolue", et Java possède une fonction appelée Math.abs pour le faire à votre place. Vous pouvez aussi éviter l'appel de fonction et le faire vous-même :

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

ou

if (number < 0)
    number = -number;

23 votes

Oh, le temps des dilemmes - il y a tellement de réponses toutes aussi bonnes les unes que les autres, que je pourrais aussi bien supprimer la mienne. Mais alors je perdrais 40 points, et je ne rattraperai jamais Jon Skeet si je fais ça.

3 votes

Désolé -1 pour avoir réinventé un appel de la bibliothèque standard.

12 votes

@cletus, avez-vous remarqué que j'avais déjà mentionné l'appel à la bibliothèque standard ? Ou que dans ce cas, la "réinvention" prend moins d'instructions que l'appel à la bibliothèque ?

19voto

Hexagon Theory Points 3713

Tu cherches la valeur absolue, mon pote. Math.abs(-5) retourne 5...

12voto

jpalecek Points 31928

Utilisez le abs fonction :

int sum=0;
for(Integer i : container)
  sum+=Math.abs(i);

10voto

OscarRyz Points 82553

1 plus

Pourquoi n'utilisez-vous pas :

Ma..ab....

... Oh.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X