En java quand tu fais
a % b
Si a est négatif, il retournera un résultat négatif au lieu de rester comme il se doit. Quelle est la meilleure façon de résoudre ce problème? La seule façon dont je peux penser est
a < 0 ? b + a : a % b
En java quand tu fais
a % b
Si a est négatif, il retournera un résultat négatif au lieu de rester comme il se doit. Quelle est la meilleure façon de résoudre ce problème? La seule façon dont je peux penser est
a < 0 ? b + a : a % b
Il se comporte comme il se doit a % b = a - a / b * b; c'est à dire qu'il est le reste.
Vous pouvez le faire (a % b + b) % b
Cette expression fonctionne comme le résultat d' (a % b)
est nécessairement inférieur b
, peu importe si a
soit positif ou négatif. L'ajout d' b
prend soin de les valeurs négatives de l' a
, depuis (a % b)
est une valeur négative entre -b
et 0
, (a % b + b)
est nécessairement inférieur b
et positif. La dernière modulo est-il en cas a
a été positive pour commencer, puisque si a
positif (a % b + b)
qui allait devenir plus grand que b
. Par conséquent, (a % b + b) % b
), il devient plus petit que b
(et n'affecte pas négatif a
des valeurs).
A partir de Java 8, vous pouvez utiliser Math.floorMod (int x, int y) et Math.floorMod (long x, long y) . Ces deux méthodes donnent les mêmes résultats que la réponse de Peter.
Math.floorMod( 2, 3) = 2
Math.floorMod(-2, 3) = 1
Math.floorMod( 2, -3) = -1
Math.floorMod(-2, -3) = -2
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.