CMD set /a, le module, et les nombres négatifs
CMD est pas en mesure d'évaluer le module de nombres négatifs à l'aide de set /a
?
90 % 7
correctement équivaut à 6 dans le lot, cependant -90 % 7
donne -6 au lieu de 1.
J'ai pensé qu'il pourrait avoir été l'évaluation -(90 % 7)
, mais cela ne semble pas être le cas (-90) % 7
donne également -6.
h:\uprof>set /a -90%7
-6
h:\uprof>set /a (-90)%7
-6
Donc: est - ce une limitation de la Cmd set /un Module opérateur?
- Pourquoi
-90 % 7
devrait vous donner 1 au lieu de -6? - Selon Google calculatrice - (-90) Modulo 7 = 1.
- Calculatrice de Windows aussi nous donner -6
- Juste pour ajouter à la confusion: =1, =-6, =-6
Vous devez vous connecter pour publier un commentaire.
La
%
dans CMD beaucoup comme dans d'autres environnements de microsoft est un reste la fonction pas un vrai modulo. Le reste est exact ici pour revenir -6 pour vos exemples. À l'aide demod
dans Excel est un vrai modulo qui ne retourner votre 1.Bien que c'est écrit en C#, l'article ci-dessous a une excellente répartition de la différence:
http://blogs.msdn.com/b/ericlippert/archive/2011/12/05/what-s-the-difference-remainder-vs-modulus.aspx
Si vous voulez un vrai modulo, que vous pouvez utiliser ceci:
Comme Jason W dit,
%
n'est pas un opérateur modulo. Mais si vous voulez -b mod N, peut-être que cela peut vous aider:Ma solution avec une boucle assez heureux, il s'est avéré travail, comme tous les autres réponses ici ne me donne pas ce que je voulais. Il suffit de remplacer !VARIABEL1/2! avec ce que vous voulez calculer. L' !modulo! la sortie va être le calcul.
E. g.:
mod_a: 10,
mod_b: 4,
modulo: 2
C'est peut-être pas la façon la plus élégante, mais c'est le lot après tout. 😀
Cheers,
Martin