Fonction modulo et non pas reste...

Résolu
cs_derf4002 Messages postés 23 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 13 janvier 2009 - 6 févr. 2006 à 23:22
NickJackolson Messages postés 2 Date d'inscription jeudi 30 juillet 2009 Statut Membre Dernière intervention 3 août 2009 - 3 août 2009 à 20:26
Bonjour, je suis étudiant en première année d'IUT Info et je me suis mis ya quelques jour au java (pour le plaisir, dans le cadre des cours on est encore en ADA) et je suis arrivé face à un problème.
Sur tout les site où j'ai pu chercher, il était dit que le modulo était représenté par % or si je ne me trompe pas, le % ne fai que calculer le reste de la division (rem en ada) ce qui donne la meme chose que le modulo (mod en ada) me direz vous, mais en fait non, pas pour les nombres négatifs...
De ce fait quand dans mon algoritme je fais -1%3 (par exemple) il me renvoi -1 or si je suis pas mauvais en math, -1 modulo 3 sa fai 2... Et en effet masupe calculatrice me dis la meme chose :p
Bref voila où est mon problème, donc n'y aurait il pas une véritable fonction modulo et non pas une alternative comme le %, que je puisse l'utliser avec les négatifs ?

Merci d'avance ^^

4 réponses

eddyger Messages postés 20 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 13 décembre 2010
7 févr. 2006 à 07:17
Bonjour,

essaye avec la classe java.math.BigInteger.(http://java.sun.com/j2se/1.4.2/docs/api/java/math/BigInteger.html)

BigInteger b1 = new BigInteger("-1");
BigInteger b3 = new BigInteger("3"); int mod b1.mod(b3).intValue(); // OU BigInteger mod b1.mod(b3);
Cette classe n'a pas de constructeur qui accepte des "int" ou "long" ... mais tu peux faire un truc du genre :
int i1 = -1 ;
int i2 = 3 ;
BigInteger b1 = new BigInteger(new Integer(i1).toString());
BigInteger b3 = new BigInteger(new Integer(i2).toString());
int mod = b1.mod(b3).intValue();
Il y a peut-être plus simple, mais le résultat semble correct.
ed
3
Rejoignez-nous