CMD set /a, modulo und negative zahlen
Ist CMD nicht in der Lage zu bewerten, den modulo von negativen zahlen mit set /a
?
90 % 7
richtig entspricht 6 im batch -, aber -90 % 7
gibt -6 statt 1.
Ich dachte, dass es vielleicht bewerten -(90 % 7)
, aber dies scheint nicht der Fall zu sein, wie (-90) % 7
gibt auch -6.
h:\uprof>set /a -90%7
-6
h:\uprof>set /a (-90)%7
-6
So ist dies eine Einschränkung der Befehle set /a Modulo-operator?
- Warum
-90 % 7
sollte Ihnen 1 anstelle von -6? - Laut der Google-Taschenrechner - (-90) Modulo 7 = 1.
- Windows-Rechner geben uns auch -6
- Nur in der Verwirrung: =1, =-6, =-6
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
%
im CMD-ähnlich wie in anderen microsoft-Umgebungen ist eine Rest Funktion - nicht wahr modulo-operation. Der Rest ist genau hier wieder -6 für Ihre Beispiele. Mitmod
in Excel ist eine wahre modulo, die nicht Ihre Rückkehr erwartete 1.Obwohl es ist geschrieben für C#, der unten stehende Artikel hat eine großartige Aufschlüsselung der Unterschied:
http://blogs.msdn.com/b/ericlippert/archive/2011/12/05/what-s-the-difference-remainder-vs-modulus.aspx
Wenn Sie wollen true modulo, als Sie diese:
Als Jason W sagte:
%
ist nicht eine modulo-operator. Aber wenn Sie wollen -b mod N, vielleicht kann das helfen:Meine Lösung mit einer Schleife, die ganz glücklich war, zu arbeiten, wie alle anderen Antworten hier nicht, gib mir, was ich wollte. Ersetzen Sie einfach !VARIABEL1/2! mit dem, was Sie berechnen möchten. Die !modulo! Ausgabe wird die Berechnung.
E. g.:
mod_a: 10,
mod_b: 4,
modulo: 2
Vielleicht ist es nicht der eleganteste Weg, aber es ist batch, nachdem alle. 😀
Cheers,
Martin